gpt4 book ai didi

java - FTP 连接输入流挂起

转载 作者:行者123 更新时间:2023-11-30 04:03:37 25 4
gpt4 key购买 nike

我正在使用 apache commons net FTPSClient 连接到本地 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() 也返回 true,而 socket.isInputShutDown() 返回 false。一切看起来都很顺利,直到 ftp 客户端实际尝试从输入流中读取数据为止,这会无限期地挂起,而不会收到任何数据。由于使用了 SSL,因此无法选择 Wireshark。

此时(由于套接字状态)我已经排除了防火墙问题,但我不知道可能导致挂起的原因。我认为它是服务器端的,我可以与运行它的人交谈,但如果我能告诉他们去哪里查看,那将会很有帮助。

更新

如果问题被否决或投票赞成关闭,我希望得到解释...在我看来,这是一个完美的 stackoverflow 问题。

最佳答案

使用 FTPS,您必须使用 PROT P 使数据通道成为 TLS,或使用 PROT C 使数据通道成为不 protected 数据通道。它可能会挂起,因为客户端和服务器不同意 channel 的保护,例如客户端等待来自服务器的非加密数据,而服务器等待来自客户端的 TLS Client Hello 以开始加密。因此,请检查您的通讯中是否有“PROT”命令及其回复。

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

关于java - FTP 连接输入流挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21327068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com