在C#中绑定套接字时获取无效的指针地址
本文关键字:无效 指针 地址 获取 绑定 套接字 | 更新日期: 2023-09-27 18:01:08
在我们团队的一个桌面上,我们在运行以下代码时遇到了一个奇怪的错误:
IPAddress ipaddress = IPAddress.Parse(sIPDaddress);
var endpoint = new IPEndPoint(ipaddress, m_iPort);
listener.Bind(endpoint);
listener.Blocking = true;
listener.Listen(-1);
我们在绑定命令上得到以下10014错误:
WSAEFAULT 10014地址错误。系统检测到无效指针地址。此错误如果应用程序传递了无效的指针值,或者缓冲区的长度太小。例如,如果参数是sockaddr结构,它小于sizeof(sockaddr(。
我们最初认为这是一个网络问题,但我的笔记本电脑在连接到他的网络端口时运行相同的代码
桌面启用了ip4,这是我们唯一遇到此问题的机器。我们甚至更换了网卡,但错误仍然存在。
有什么想法吗?
我在上面的代码上方找到了一行:
Socket listener = new Socket(0, SocketType.Stream, ProtocolType.Tcp);
我把它切换到:
Socket listener = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
它奏效了。
仍然不确定为什么这种情况发生在一台开发人员机器上,而没有发生在其他机器上。
我注意到的是,当我在一台正在工作的开发机器上进行ipconfig时,显示了一个Link本地IPV6地址。但是,在不工作的机器上,没有链接本地IPV6地址的条目。不确定这是否相关。