自定义FTP程序
本文关键字:程序 FTP 自定义 | 更新日期: 2023-09-27 18:07:03
我有一个用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
错误10065不是凭据问题。TCP协议错误。这通常意味着主机无法访问。它发生在连接建立之前(甚至在凭证可以交换之前)。可能是超时或防火墙问题。
你能验证你用来连接的IP地址(即main_ipEndPoint)与其他FTP客户端获得的IP地址匹配吗?您应该能够在FTP Client日志中看到它。或者你可以直接在FileZilla(等等)中输入IP地址,看看它是否可以连接。