【问题标题】:Xamarin Android UDP catch Broadcast from other clientsXamarin Android UDP 捕获来自其他客户端的广播
【发布时间】:2021-09-22 09:52:44
【问题描述】:

我正在尝试从网络中的客户端发送 UDP 消息,但是当我创建一个新的 UdpClient 时,我总是遇到异常:

System.Net.Sockets.SocketException: '访问被拒绝'

我的代码在控制台应用程序上非常简单且非常完美,但在 Xamarin 应用程序中却没有。

public void Demo()
        {
            var Server = new UdpClient(80);
            var ResponseData = Encoding.ASCII.GetBytes("SomeResponseData");

            while (true)
            {
                var ClientEp = new IPEndPoint(IPAddress.Any, 0);
                var ClientRequestData = Server.Receive(ref ClientEp);
                var ClientRequest = Encoding.ASCII.GetString(ClientRequestData);

                Console.WriteLine("Recived {0} from {1}, sending response", ClientRequest, ClientEp.Address.ToString());
                Server.Send(ResponseData, ResponseData.Length, ClientEp);
            }
        }

我还看到this 发帖,但这对我没有帮助。

我正在使用 Android 11 进行测试。

【问题讨论】:

  • 您是否尝试过使用另一个本地端口而不是 80?你的场景有可能吗?
  • 是的,我尝试了很多端口。没有区别。
  • 您可以使用try/catch (SocketException.ErrorCode)获取具体的错误码,然后参考docs.microsoft.com/en-us/windows/win32/winsock/…了解错误详情。
  • @WenxuLi-MSFT {System.Net.Sockets.SocketException (0x80004005):在 /Users 中的 System.Net.Sockets.Socket.Bind (System.Net.EndPoint localEP) [0x0003d] 拒绝访问/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/System/System.Net.Sockets/Socket.cs:787 在 System.Net.Sockets.UdpClient..ctor (系统。 Int32 端口,System.Net.Sockets.AddressFamily 系列)[0x0007e] 在 /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/System/net/System/Net /Sockets/UDPClient.cs:108
  • -- 在 System.Net.Sockets.UdpClient..ctor (System.Int32 端口) [0x00000] 在 /Users/builder/jenkins/workspace/archive-mono/2020-02/android/ release/mcs/class/referencesource/System/net/System/Net/Sockets/UDPClient.cs:73 at NetworkScann.BaseUdpReceiver.Demo () [0x00002] 在 C:\Users\Nils\source\repos\NetworkScan\NetworkScan\ BaseUDP.cs:44 }

标签: c# android .net xamarin


【解决方案1】:

我找到了另一个帖子,this 因此,如果您没有 root 设备,则无法绑定端口 80。

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2020-01-12
  • 2020-07-24
  • 1970-01-01
  • 2011-01-22
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 2017-12-30
  • 2010-11-12
相关资源
最近更新 更多