代码之家  ›  专栏  ›  技术社区  ›  steam1234322

更改FTPClient端口以发送命令

  •  0
  • steam1234322  · 技术社区  · 7 年前

    连接到端口21时,如何将端口更改为50?

    ftpClient.sendCommand 我得到一个回复码 500 Unknown command

    2 回复  |  直到 7 年前
        1
  •  0
  •   Lothar    7 年前

    你应该回到告诉你这个要求的人那里,询问细节,因为——坦率地说——整件事都没有真正意义:

    • FTP使用两个连接:控制和数据。控制通道是您在端口21上打开的通道,只有这一个,您不能在之后将其更改回另一个端口。因此,“在端口50上发送命令,但在端口21上连接”与FTP无关。
    • 端口上的数据连接<1024并不常见,所以很难相信有这个要求的人也有这个意思。对于一个需要主动FTP连接的系统,现在每个人都试图避免这种连接,因为配置起来很麻烦。在端口上打开侦听器(<1024将需要Unix系统上的root权限,这不太可能仅用于FTP传输。

    您还说,您实际尝试发送到服务器的命令是机密的。我觉得这很难相信,但如果真的是这样,那就意味着我们在谈论一个非标准的FTP服务器,它使用自己的一组FTP命令,也就是说,常规的FTP客户端可能根本无法满足您的需要。

        2
  •  0
  •   Mike    7 年前

    通常在连接时,服务器控制端口分配。因此,当您发出pasv命令(被动模式)时,它通常会向您发回一个IP/端口以连接数据连接。我不知道有什么能让你做你想做的事。服务器可以限制这些类型的端口范围。这里有一个很好的解释。

    Active vs Passive FTP

    **编辑**

    有两件事你可以试试,我从来没有用过,所以YMMV。

    在活动模式下,客户端为服务器提供一个要连接的端口。

    client.setDefaultPort(50);
    client.enterLocalActiveMode(); // Apache FTPClient
    

    client.setActivePortRange(50, 50)
    client.enterLocalPassiveMode();
    

    您应该询问服务器期望的模式。