c#socket连接addressfamily

时间:2016-01-14 13:04:40

标签: c# sockets ftp

我有一个连接到我的ftp的功能

   clientSocket = new Socket(AddressFamily.Unspecified, SocketType.Stream, ProtocolType.Tcp);
   clientSocket.Connect(new IPEndPoint(Dns.Resolve(remoteAddress).AddressList[0], remotePort));

但是,对于某些计算机,这并不起作用。

是个例外
  

当系统尝试使用调用的指针参数时,系统检测到无效的指针地址。

如果我将AddressFamily.Unspecified更改为AddressFamily.InterNetwork,问题就解决了。 我必须理解为什么会出现这个问题,为什么原始代码适用于某些计算机而不适用于所有人... 如果有人可以帮助我:)。

1 个答案:

答案 0 :(得分:1)

使用AddressFamily.Unspecified时,您可能使用的第一个地址可能是IPv6而不是IPv4。通过此MSDN website,您可以看到使用AddressFamily.InterNetwork使用IPv4地址。

获取所有地址然后使用第一个IPv4地址可能更安全。这个答案将告诉你如何:Get IPv4 addresses from Dns.GetHostEntry()