Java FTP连接输入流挂起

Java FTP连接输入流挂起,java,ftp,apache-commons-net,Java,Ftp,Apache Commons Net,我正在使用ApacheCommonsNetFTPSClient连接到本地ftp(被动模式)。之后,这种联系似乎就中断了 > LIST < 150 Opening ASCII mode data connection for /bin/ls. >列表

我正在使用ApacheCommonsNetFTPSClient连接到本地ftp(被动模式)。之后,这种联系似乎就中断了

> LIST
< 150 Opening ASCII mode data connection for /bin/ls.
>列表
<150打开/bin/ls的ASCII模式数据连接。
我在FTPClient类中添加了一些日志记录,以查看它的具体挂起位置。在这种方法中:

创建套接字,socket.isBound()返回true,socket.isConnected()返回true,socket.isInputShutDown()返回false。在ftp客户端实际尝试读取inputstream之前,一切似乎都很好,这将在没有任何数据的情况下不确定地挂起。由于使用SSL,Wireshark不是一个选项

在这一点上(由于套接字状态),我已经排除了防火墙问题,但我不知道什么可能导致挂起。我假设它是服务器端的,我可以和运行它的人交谈,但如果我能告诉他们去哪里看,那会很有帮助

更新


如果该问题被否决或表决为关闭,我将非常感谢您的解释……在我看来,这是一个完美的堆栈溢出问题。

对于FTPS,您必须使用PROT p为非受保护的数据通道创建数据通道TLS或PROT C。它可能会挂起,因为客户端和服务器对通道的保护不一致,例如,客户端等待来自服务器的非加密数据,而服务器等待来自客户端的TLS客户端Hello启动加密。因此,请检查您的通信中的“PROT”命令及其回复


其他问题可能是FTP服务器位于路由器或防火墙后面。PASV模式在客户端位于防火墙后面时使用,但如果服务器位于哑防火墙或NAT后面,则会出现问题。如果普通(例如非TLS)FTP工作,请尝试。

嗯,问题中的链接…?这不是您的代码…这是您使用的FTP客户端的代码,FTP客户端在尝试读取从套接字创建的输入流时挂起…问题确实与缺少握手有关。谢谢!