gpt4 book ai didi

java - 目录为空时 NLST 上的 FTP 超时

转载 作者:行者123 更新时间:2023-11-29 07:23:24 24 4
gpt4 key购买 nike

编辑:了解到 Webmethods 实际上使用 NLST,而不是 LIST,如果重要的话

我们的业务使用 WebMethods 集成服务器来处理我们的大部分出站通信,它的 FTP 功能还有待改进。我们遇到了一个可能特定于 WebMethods 的问题,但如果有人能指出可能导致此问题的原因,我将不胜感激。

当轮询我们合作伙伴的两个 FTP 服务器时,我们连接没有问题,但是当在一个空目录(没有文件和子目录)上执行 NLST 时,它会超时。实际错误是:

com.wm.net.ftpCException: [ISC.0064.9010] java.net.SocketTimeoutException: Accept timed out

它是在调用 pub.client.ftp:ls 服务期间抛出的。我已经使用多个 FTP 客户端登录到相同的站点而没有问题。我使用过 Windows 中的任何默认 FTP 客户端、FileZilla 和 lftp。一切都没有问题。据我所知,服务器本身与 FTP 服务器软件不同。一个是 Microsoft FTP,另一个我不确定但绝对不是 Microsoft。

知道什么会导致 FTP 客户端在空目录上等待 NLST 响应时超时吗?来自 FTP 服务器的可见响应似乎是相同的,但是 NLST 对我不知道的空目录的响应方式是否有所不同?

这个问题在这两个服务器上是一致的。在包含文件或子目录的目录中一切正常,但在空目录中则不然。

如有任何想法或指示,我们将不胜感激。

谢谢!

埃里克·西普尔

最佳答案

我在 WebMethods IS 版本 6.5 更新 WmPRT_6-5-1_SP1、IS_6-5_SP3 中试过这个。

它第一次运行完美。

我在 FTP 服务器(Debian 的默认 ftpd)上打开了调试。 WebMethods 的 NLST 接受传递给它的主动/被动参数。

NLST 命令没有什么特别之处,它在空目录下的正确行为也没有——如果 LIST 有效,那么 RETR、STOR 和 NLST 也应该有效。如果 NLST 使用非空目录,它应该使用空目录。

所以我的猜测是:

  • 你的 WM 版本有一个错误,我的没有
  • 你的 FTP 服务器有一个错误,我的没有
  • 您的系统中有一个古怪的协议(protocol)感知防火墙,它不喜欢其中没有数据的 FTP 数据套接字。

当谈到 FTP 时,防火墙供应商有点任性......使用其他客户端进行测试时,请确保它来自运行 WebMethods Integration Server 的同一台机器。

仅作记录,这是活跃的 NLST 应该发生的情况

  • 客户端打开一个监听套接字,并发送一个带有该套接字详细信息的 PORT 命令
  • 客户端发送NLST命令
  • 服务器连接到客户端的监听套接字(这是数据套接字)
  • 服务器通过数据套接字传输列表(在本例中为零字节)
  • 服务器关闭数据套接字

...并处于被动模式

  • 客户端发送PASV命令
  • 服务器打开一个监听套接字,并回复包含其详细信息的 PASV 响应
  • 客户端连接到监听套接字(这是数据套接字)
  • 客户端发送NLST命令
  • 服务器通过数据套接字传输列表(再次为零字节)
  • 服务器关闭数据套接字

关于java - 目录为空时 NLST 上的 FTP 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57194/

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