自定义FTP程序

时间:2014-06-06 20:34:40

标签: c# sockets ftp

我有一个用Visual Studio 2008 / C#/ .Net 3.5框架创建的FTP工具。

该工具可与5个不同的FTP服务器连接,并可毫无问题地下载文件。但是,当它与另一个FTP服务器(xxx)连接时,相同的工具连接失败。我检查了客户端和服务器端的防火墙异常,并且未过滤此IP。但是,我可以通过FileZilla / Internet Explorer / windows explorer连接到xxx服务器,在端口21上使用相同的凭据,它让我可以查看和下载文件。以下是进行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

1 个答案:

答案 0 :(得分:0)

错误10065不是凭据问题。这是TCP协议错误。这通常意味着无法访问主机。它发生在连接之前(甚至可以交换凭证之前)。也许是超时或防火墙问题。

您可以验证用于连接的IP地址(即main_ipEndPoint)是否与其他FTP客户端获得的IP地址匹配?您应该能够在FTP客户端日志中看到它。或者您可以直接在FileZilla(等)中输入IP地址,看看它是否可以连接。