UdpClient构造函数引发SocketException

本文关键字:SocketException 构造函数 UdpClient | 更新日期: 2023-09-27 18:00:36

在构造指定IPv4系列的UdpClient对象时遇到异常。这种情况只发生在一台Windows7 64位计算机上,其他具有相同操作系统的计算机运行良好。

确切的例外是:

System.Net.Sockets.SocketException (0x80004005): An invalid argument was supplied
   at System.Net.Sockets.Socket..ctor(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType)
   at System.Net.Sockets.UdpClient.createClientSocket()

SocketException.ErrorCode是WSAEINVAL 10022,InvalidArgument。

引发此异常的代码:

this.udpClient = new UdpClient(AddressFamily.InterNetwork);

有人能解释一下这个例外告诉我什么吗?IPv4怎么可能是新UDP客户端的无效参数?

更新:只有在从网络驱动器运行应用程序时才会发生这种情况。在本地运行它不会导致此异常。

UdpClient构造函数引发SocketException

文档建议您在这种情况下检查SocketException::ErrorCode。这有什么价值?应该很有启发性。我认为Family参数很好,否则您会得到ArgumentException

如果收到SocketException,请使用SocketException::要获取的ErrorCode特定的错误代码。一旦你获得此代码后,可以参考Windows套接字版本2 APIMSDN中的错误代码文档错误的详细描述。

0x80004005是拒绝访问,您没有创建套接字的权限,也许是您的防火墙?

或者你的套接字正在使用中,你是否在没有终止套接字的情况下终止了程序?