2

全部,

我有一个远程 ftp 服务器的问题,它让我忙了三天,现在我要疯了。:(

前段时间,我写了一个使用 apache commons-net 2.0 的简单 ftp 检索器类。该类在 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 上的命令行连接就像一个魅力。

我完全迷失在这里。有人知道我为什么会遇到这个问题吗?

干杯

4

2 回答 2

3

我不敢相信我花了将近五天的时间。经过长时间的回滚更改、提交中间版本、调试和大约 15923 杯咖啡,我终于找到了所有这些混乱的原因。

事实证明——无论出于何种原因——只要将xpp3驱动程序(如XStream)打包到耳中并在 JBoss 5.1 上部署它,通过任何 ftp 库的任何连接都会变得混乱。

我不知道这是由其他库干扰 xpp3 还是 xpp3 本身引起的。坦率地说,我现在也顾不得那么多了。我所知道的是,一旦我从我的项目中删除了这种依赖关系,一切都会像魅力一样发挥作用。

该死的,xpp3 - 我会起诉你,因为你花了我十年的生命!:)

谢谢大家的帮助,我要回家了……

于 2010-09-09T11:45:32.213 回答
1

建议:在客户端机器上安装 Wireshark 并在工作(filezilla)和非工作条件下捕获网络跟踪,看看有什么不同。如果您在 Linux 上使用 tcpdump 命令捕获数据包,然后使用 Wireshark 检查它们。

于 2010-09-08T17:00:27.207 回答