我有一个连接到我的ftp的功能
clientSocket = new Socket(AddressFamily.Unspecified, SocketType.Stream, ProtocolType.Tcp);
clientSocket.Connect(new IPEndPoint(Dns.Resolve(remoteAddress).AddressList[0], remotePort));
但是,对于某些计算机,这并不起作用。
是个例外当系统尝试使用调用的指针参数时,系统检测到无效的指针地址。
如果我将AddressFamily.Unspecified更改为AddressFamily.InterNetwork,问题就解决了。 我必须理解为什么会出现这个问题,为什么原始代码适用于某些计算机而不适用于所有人... 如果有人可以帮助我:)。
答案 0 :(得分:1)
使用AddressFamily.Unspecified
时,您可能使用的第一个地址可能是IPv6而不是IPv4。通过此MSDN website,您可以看到使用AddressFamily.InterNetwork
使用IPv4地址。
获取所有地址然后使用第一个IPv4地址可能更安全。这个答案将告诉你如何:Get IPv4 addresses from Dns.GetHostEntry()