我使用apache commons net FTPSClient连接到本地ftp(被动模式)。连接似乎挂起后FTP连接输入流挂起
> LIST
< 150 Opening ASCII mode data connection for /bin/ls.
我已经添加了一些日志记录到FTPClient类,看看它究竟在哪里挂起。它是用这种方法:http://grepcode.com/file/repo1.maven.org/maven2/commons-net/commons-net/3.3/org/apache/commons/net/ftp/FTPClient.java#FTPClient.initiateListParsing%28org.apache.commons.net.ftp.FTPFileEntryParser%2Cjava.lang.String%29
套接字被创建并且socket.isBound()返回true,如同socket.isConnected(),而socket.isInputShutDown()返回false。所有这一切似乎都很好,直到ftp客户端实际尝试从输入流中读取数据,这会在没有任何数据即将出现的情况下无限期地挂起。由于使用SSL,Wireshark不是一个选项。
在这一点上(由于套接字状态),我排除了防火墙的问题,但我不知道可能会导致挂起。我认为这是服务器端,我可以与运行它的人交谈,但如果我能告诉他们在哪里寻找,这将是有帮助的。
UPDATE
如果问题是downvoted或投票接近我会非常感激的解释......在我看来,是一个完美的计算器问题。
你的代码在哪里? –
恩,问题中的链接......? – nablex
那不是你的代码...那就是你使用的FTPClient的代码 –