我有一个连接到我的 ftp 的函数
clientSocket = new Socket(AddressFamily.Unspecified, SocketType.Stream, ProtocolType.Tcp);
clientSocket.Connect(new IPEndPoint(Dns.Resolve(remoteAddress).AddressList[0], remotePort));
但是,对于某些计算机,这不起作用。 异常(exception)是
The system detected an invalid pointer address when it tried to use a pointer argument of a call.
如果我将 AddressFamily.Unspecified 更改为 AddressFamily.InterNetwork,问题就解决了。 我必须理解为什么会出现这个问题,为什么原始代码适用于某些计算机但不适用于所有人...... 如果有人可以帮助我:)
最佳答案
使用AddressFamily.Unspecified
时,您可能使用的第一个地址可以是 IPv6 而不是 IPv4。从这里MSDN website ,您可以看到使用 AddressFamily.InterNetwork
使用 IPv4 地址。
获取所有地址然后使用第一个 IPv4 地址可能更安全。这个答案将向您展示如何:Get IPv4 addresses from Dns.GetHostEntry()
关于时间:2019-05-17 标签:c#socketconnectaddressfamily,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34790404/