书上说,发送port之后,应在本地被动打开port的那个端口
等待服务器来主动连接你的端口

解决方案 »

  1.   

    port指的端口好不是ftp服务器上面的那个端口号吗?
      

  2.   

    现在我用port指定了本机的地址和端口之后,我用socket打开指定的端口进行侦听。现在我要取得远端服务器目录的列表,所以就发送list命令。可我还不能确定什么时候可以接受远断的连接,因为accept()是阻塞的。我是在收到150 Opening ASCII mode data connection for /bin/ls.之后,调用accept的。可是我的系统被阻塞了。后来我在得到226 Transfer complete.之后在accept,发现有时收不到这条消息,也就无法接受到目录列表的数据了。
    我的结论是:好象要正常的接受目录列表数据必须得在收到226返回之后才可以。但为什么有的时候服务器在150之后返回的是425 Can't open data connection.,我的socket是一直在端口上侦听的,怎么还有连接不到的可能呢,而且我发现过一段时间之后就可以了。而且在取得一次目录列表之后如果立即又去取得列表那肯定返回425,必须过几分钟才可以。有没有谁可以告诉我这到底是为什么啊!!!!????