可以通过Socket5代理,就行,给我发e-mail:[email protected]
or [email protected]
给你300分。

解决方案 »

  1.   

    我发个ftp client库文件给你,去查收
      

  2.   

    singleflower(shifan)
    谢谢,我看了,并不能解决我所说的问题.
    不过谢谢你的关注.
      

  3.   

    你建立了几个socket连接??ftp下载和上传要两个连接,一个就是你登录时候用的command connection,另外一个就专门传输数据的data connection.如果没有数据连接当然就会像你说的那样了,呵呵  ^_^
      

  4.   

    我建立了两个socket,数据Socket并没有接受到任何数据.谢谢stome1025(到处乱转的土人)
      

  5.   

    我曾经有一个类似FlashGet的软件,感觉还可以是我朋友做的一个程序。
      

  6.   

    如果用一些客户端软件可以实现上载下载的,肯定你的上载、下载部分程序有问题,偶原来用Socket做过FTP的客户端,不妨把这部分代码贴出来,帮你看看。我的mail:[email protected]
      

  7.   

    public void download(string remoteFileName,string localFileName,ref string resultInfo)
    {
    ...
    TcpListener conn = new TcpListener(IPAddress.Any,Port());
    conn.Start();
    ...
    SendLine(m_pClient,"PASV mode");
    reply = ReadLine(m_pClient);
    ...
    SendLine(m_pClient,"RETR " + remoteFileName);
    reply = ReadLine(m_pClient);
    long startTime = DateTime.Now.Ticks;
    while(!conn.Pending())
    {
    System.Threading.Thread.Sleep(50);
    if((DateTime.Now.Ticks - startTime) / 10000 > 20000)
    {
    resultInfo = "Ftp server no response";
    return;
    }
    }
    using(Socket connectedFtpServer = conn.AcceptSocket())
    {
    conn.Stop();
    int count = 1;
    while(count > 0)
    {
    byte[] data  = new Byte[1024];
    count = connectedFtpServer.Receive(data,data.Length,SocketFlags.None);
    output.Write(data,0,count);
    output.Flush();
    }
    }
    }
      

  8.   

    看的有点晕,感觉不对。FTP下载应该是控制Socket向Server发送一个
    1、"RETR  文件名"后,服务器端会返回一个信息“150 Opening ...”
    2、服务器端返回"200 ....."
    3、送"PASV"到Server,应该返回"227 Entering Passive Mode (111,110,5,149,18,190)"
       返回Server端的IP和对应的端口
    到这以后,开一个Socket去连这个端口,并读取数据,就是文件下载了。
      

  9.   

    详细说明:
    我的ftp客户端ip:192.168.0.111
    socket 代理IP:内部:192.168.0.112
                  外部:210.47.16.222
    Ftp服务器:218.62.16.66 端口:21m_pClient.ProxyEndPoint = new IPEndPoint(IPAddress.Parse(192.168.0.112), 1080);
    m_pClient.Connect("218.62.16.62", 21);
    {
      连接代理的Socket.send(5103 + 数组(218.62.16.66)+ 数组(21))
      ipv4地址  Socket.recieve(210.47.16.222,2526)
    }
    m_pClient.send(PASV MODE)
    m_pClient.recieve(218.62.16.66, 5666)
    然后
    我在下载时,接上述代码:
    TcpListener conn = new TcpListener(IPAddress.Any,Port());
    …………
      

  10.   

    你要是对FTP是怎么实现搞清楚就好办了,对于上载下载Server端有两个Socket,一个控制Socket和一个数据Socket。具体我没去实现过,也只能给你提示提示,不过你其他功能都实现了,仔细一点,跟踪Server端返回的信息,结合一些FTP客户端(FlashFXP)指令执行返回的情况,应该可以实现。Good luck!
      

  11.   

    now I am working for that , I can give you some hints about it, and later I am thinking pack up core file and publish  to internet 
      

  12.   


    你可以通过Platform Invoke的方式调用随Windows自带的WinInet API完成相应的工作。使用WinInet API方式来完成与FTP服务器的通讯,相对于使用WinSock来实现相应的功能,使用WinInet API有以下优点:
      WinInet API是Win32 标准应用程序接口的一部分,由系统原生提供,有较高的稳定性和高效性,并经过严格的测试,WinInet API具有一定的灵活性,可以自行设置Proxy代理服务器,并且可以自动适应防火墙后的网络环境
      

  13.   

    // 从FTP下载文件                   [DllImport("wininet.dll", CharSet = CharSet.Auto)]                   public static extern bool FtpGetFile(IntPtr ulSession, string strRemoteFile, string strLocalFile, bool bolFailIfExist, ulong ulFlags, ulong ulInetFals, ulong ulContext);                    // 向FTP上传文件                   [DllImport("wininet.dll", CharSet = CharSet.Auto)]                   public static extern bool FtpPutFile(IntPtr ulSession, string strLocalFile, string strRemoteFile, ulong ulFlags, ulong ulContext);