【发布时间】:2014-06-06 20:34:39
【问题描述】:
我有一个使用 Visual Studio 2008 / C# / .Net 3.5 框架创建的 FTP 工具。
该工具可以连接 5 个不同的 FTP 服务器并下载文件没有任何问题。但是,同一工具在与另一台 FTP 服务器 (xxx) 连接时,连接失败。我检查了客户端和服务器端的防火墙异常,并且这个 IP 没有被过滤。但是,我可以通过 FileZilla / Internet Explorer / Windows Explorer 在端口 21 上使用相同的凭据连接到 xxx 服务器,它让我可以查看和下载文件。下面是建立 FTP 连接的代码。任何帮助将不胜感激。
public void Connect(string server, string user, string pass)
{
main_sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
main_ipEndPoint = new IPEndPoint(Dns.GetHostEntry(server).AddressList[0], 21); // returning correct IP
}
catch
{
main_ipEndPoint = new IPEndPoint(Dns.GetHostAddresses(server)[0], 21);
}
try
{
main_sock.Connect(main_ipEndPoint); // failing at this line.
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
return;
}
错误信息:
{System.Net.Sockets.SocketException:连接尝试失败 因为连接方在一段时间后没有正确响应 时间,或建立连接失败,因为连接的主机有 未能响应 123.192.122.1XX:21。
错误代码:10065
【问题讨论】:
-
尝试使用 netcat 或类似工具嗅探网络,查看数据包是否已发送、是否到达目的地等。
-
如果您使用相同的代码连接所有 FTP 服务器,从同一位置连接,并且您可以从同一台机器连接到 filezilla,我会四倍检查您的凭据并且您的呼叫正确变量。否则它似乎没有意义。我没有看到您在代码中使用用户名和密码。
-
对我来说听起来像是一个凭据问题