【发布时间】: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 }