在套接字客户端c代码处,索引超出了数组的界限

本文关键字:数组 界限 索引 客户端 套接字 代码 | 更新日期: 2023-09-27 18:27:32

我使用的是(服务器、客户端)提供的服务器和客户端套接字通信。当我在同一台机器上运行这些项目时,一切都很好。当我尝试使用其他电脑作为客户端时,我收到以下异常消息:

索引在第47行asynchronousClient.StartClient()的数组vounds之外,这实际上是第二行:

IPHostEntry ipHostInfo = Dns.GetHostEntry("serverIp");
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint remoteEP = new IPEndPoint(ipAddress, port);

EDITIPHostEntry包含存储服务器的PC的名称。但是ipAdress为null。

在套接字客户端c代码处,索引超出了数组的界限

由于ipAdress为空,因此引发错误。最可能的原因是主机名存在(DNS知道该域),但不存在A记录。为了澄清,A中的A代表地址,该记录用于从名称中查找连接到互联网的计算机的地址。

来自Dns.GetHostEntry:的文档

如果本地计算机未安装IPv6,则会从GetHostEntry方法的结果中筛选IPv6地址。因此,如果只有IPv6结果可用于hostNameOrAddress.parameter.,则可以返回空的IPHostEntry实例

也就是说,你只得到了IPv6记录,该方法为你过滤了它们。