在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,这是我们唯一遇到此问题的机器。我们甚至更换了网卡,但错误仍然存在。

有什么想法吗?

在C#中绑定套接字时获取无效的指针地址

我在上面的代码上方找到了一行:

Socket listener = new Socket(0, SocketType.Stream, ProtocolType.Tcp);

我把它切换到:

Socket listener = new Socket(AddressFamily.InterNetwork, 
                              SocketType.Stream, ProtocolType.Tcp);

它奏效了。

仍然不确定为什么这种情况发生在一台开发人员机器上,而没有发生在其他机器上。

我注意到的是,当我在一台正在工作的开发机器上进行ipconfig时,显示了一个Link本地IPV6地址。但是,在不工作的机器上,没有链接本地IPV6地址的条目。不确定这是否相关。