这是用蚂蚁连接一个代理服务器软件所得到的正确结果:(退出原因是因为FTP服务器不支持anomynous用户)
--2002/09/28 09:24:34 连接到代理服务器 (192.168.0.87:1080) ...
--2002/09/28 09:24:34 成功连接代理服务器
->2002/09/28 09:24:34 SOCKS5: 05 02 00 02
<-2002/09/28 09:24:34 SOCKS5: 05 02
->2002/09/28 09:24:34 SOCKS5: 01 06 62 65 6e 64 6f 75 06 30 30 30 32 32 37
<-2002/09/28 09:24:34 SOCKS5: 01 00
->2002/09/28 09:24:34 SOCKS5: 05 01 00 01 d3 9a ab 8a 00 15
<-2002/09/28 09:24:34 SOCKS5: 05 00 00 01 c0 a8 00 57 04 38
<-2002/09/28 09:24:34 220 Serv-U FTP Server v3.0 for WinSock ready...
->2002/09/28 09:24:34 USER anonymous
<-2002/09/28 09:24:34 530 Sorry, no ANONYMOUS access allowed.下面是用蚂蚁连接我写的代理服务:
2002/09/28 09:21:45 连接到代理服务器 (192.168.0.87:1080) ...
2002/09/28 09:21:45 成功连接代理服务器
2002/09/28 09:21:45 SOCKS5: 05 02 00 02
2002/09/28 09:21:45 SOCKS5: 05 02
2002/09/28 09:21:45 SOCKS5: 01 06 62 65 6e 64 6f 75 06 30 30 30 32 32 37
2002/09/28 09:21:45 SOCKS5: 01 00
2002/09/28 09:21:45 SOCKS5: 05 01 00 01 d3 9a ab 8a 00 15
2002/09/28 09:21:45 SOCKS5: 05 00 00 01 c0 a8 00 57 04 38前面的数据都一样,为什么我的服务器发“220 Serv-U FTP Server v3.0 for WinSock ready...”的时候,蚂蚁好像收不到,一直在那里等。请指点一下呀,我最后是把“220 Serv-U FTP Server v3.0 for WinSock ready...”当作字符串发过去的,返回值是47,但蚂蚁就是收不到,怎么回事呀?

解决方案 »

  1.   

    是不是你的代理服务器设计的有些问题。
    可以看看下面的:
    http://www.codeproject.com/internet/FTPServer.asp
      

  2.   

    搞不懂呀,为什么socks5的协商中收发数据都没问题,但开始发真正的数据时,服务器收不到东西,发数据客户端有没有响应。
      

  3.   

    220 Serv-U FTP Server v3.0 for WinSock ready...”当作字符串发过去_____________
    你确定采用字符串格式是对的?
      

  4.   

    CHAR* Buffer;
    Buffer=new char[1024];
    CString str="220 Serv-U FTP Server v3.0 for WinSock ready...";
    strcpy(Buffer,str);
    Len=sockRecv.Send(Buffer,BufferStr.GetLength());
    以上的没问题吧?会不会还要什么结束符什么的?
      

  5.   

    我是说,你知道FTP服务器的协议么? 这段数据会不会有什么数据头什么的.
    FTP我没做过 :)你的那段代码就代码而言,可以这么改:
    CString str="220 Serv-U FTP Server v3.0 for WinSock ready...";
    Len=sockRecv.Send((LPCTSTR)str,str.GetLength());
      

  6.   

    应该和ftp没关系,蚂蚁里面如果想通过代理连个http地址也一样。我试验了一下,连接connect()ftp服务器,然后受到的就是“220 ”。
      

  7.   

    前面Socket5包好象没有问题,是不是到了开始接收数据的时候,你的Socket5包写得有问题,自己写一个是用代理服务器访问Ftp的测试端,截获些报文看看,估计这些报文NetAnts没有接受。
      

  8.   

    我写了一个可以通过socks5代理去连接ftp服务器的程序。在接受到代理服务器最后一个包(2002/09/28 09:21:45 SOCKS5: 05 00 00 01 c0 a8 00 57 04 38)后,继续用Receive()接收,一共受到48个"220 Serv-U FTP Server v3.0 for WinSock ready...\r\n",
    于是我认为是少发了"\r\n",而且对这句话进行了改动Len=sockRecv.Send((LPCTSTR)str,str.GetLength()-1),这次我想应该没问题了,用蚂蚁连我自己写的代理,这次我是一个字符一个字符发的,结果当我发完\n时,蚂蚁中断了。
      

  9.   

    好了,知道怎么回事了,在发最后那个数据包的时候多发了两个字节:p (断口被我定义成ULONG的了,现在改成WORD就好了。)感谢大家!!!!