时间:2019-05-17 标签:c#socketconnectaddressfamily

标签 c# sockets ftp

我有一个连接到我的 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/

相关文章:

c# - 基于两点绘制工字梁

C 读取套接字偶尔发生变化

java - connect() 方法忽略其超时值

bash - lftp 可以跟随符号目录吗?

c# - 当另一个类的属性发生变化时,如何提高属性变化? C#

c# - Nhibernate如何在运行时获取类映射信息?

c# - LINQ to sql插入数据c#

javascript - Node 套接字挂断错误与http

Powershell 分块读取文件

sockets - 套接字错误 10053 软件导致连接中止