所有
我有一个远程ftp服务器的问题让我忙了三天而且我很疯狂。 :(
不久前,我写了一个简单的ftp检索器类,它使用apache commons-net 2.0。该类在5个不同的ftp服务器上运行良好,我可以根据需要检索数据。 现在我遇到了一个我需要连接的服务器,它不会让我列出目录或检索数据。
这是我的班级发送和检索的命令的顺序:
220 (vsFTPd 2.0.1)
USER XXXXXXX
331 Please specify the password.
PASS XXXXXXX
230 Login successful
TYPE I
200 Switching to Binary mode.
PASV
227 Entering Passive Mode (XXX,XXX,XXX,XXX,XXX,XXX)
NLST
150 Here comes the directory listing.
226 Directory send OK.
SYST
215 UNIX Type: L8
PASV
227 Entering Passive Mode (XXX,XXX,XXX,XXX,XXX,XXX)
LIST
150 Here comes the directory listing.
在最后一行,我的代码无限期挂起(好吧,我等了2个小时才看到它会阻塞多久)。我已经尝试了一切,从使用活动连接到设置ASCII类型到使用不同的ftp库 - 总是具有相同的结果。
通常,我会打电话给那些人并告诉他们他们的服务器配置不正确。但是,通过FileZilla连接不仅可以工作,而且可以快速闪存并且不会导致任何问题。另外,在linux上通过命令行连接就像魅力一样。
我完全迷失在这里。有没有人知道为什么我有这个问题?
干杯
答案 0 :(得分:3)
我无法相信我花了将近五天的时间。经过长时间的回滚变更,提交中间版本,调试和大约15923杯咖啡,我终于找到了所有这些混乱的原因。
事实证明 - 无论出于何种原因 - 只要将xpp3
驱动程序(如XStream
)打包并放在JBoss 5.1上,就可以通过任何ftp库进行任何连接弄乱。
我不知道这是否是由其他库干扰xpp3引起的,或者它是否是xpp3本身。坦率地说,我现在也不在乎。我所知道的是,一旦我从项目中删除了这种依赖,一切都像魅力一样。
该死的,xpp3 - 我会起诉你,因为我付出了我生命中的十年! :)
感谢大家的帮助,我现在要回家了......
答案 1 :(得分:1)
建议:在客户端计算机上安装Wireshark,并在工作(filezilla)和非工作条件下捕获网络跟踪,以查看不同之处。如果您使用的是Linux,请使用tcpdump命令捕获数据包,然后使用Wireshark检查它们。