更改FTPClient端口以发送命令

时间:2017-10-19 11:08:40

标签: java server port ftp-client

我正在连接并登录到端口21上的服务器。我接下来要做的是发送命令字符串,但是我已经被指示通过端口50发送此命令。

如何在端口21上连接时将端口更改为50?

我尝试在端口50上连接到服务器,并且拒绝接受。我尝试使用ftpClient.sendCommand在端口21上连接时发送命令,我收到了回复代码500 Unknown command

2 个答案:

答案 0 :(得分:0)

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

Active vs Passive FTP

你可能能够发送一个PORT命令专门连接到端口50,但这样做是非常不寻常的。

**编辑**

你可以尝试两件事,我从未使用过,所以YMMV。

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

尝试将默认端口设置为50并启用活动模式。希望这是在你的内部网络上,因为这永远不会超过防火墙请求的安全性。

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

对于被动模式,您可以尝试设置活动端口范围。

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

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

答案 1 :(得分:0)

你应该回到那个告诉你这个要求的人,并询问具体细节,因为 - 直言不讳 - 整个事情并没有真正意义:

  • FTP使用两个连接,控制和数据。控制通道是您在端口21上打开的控制通道,只有这个通道,之后您无法将其更改回另一个端口。所以"在端口50上发送命令,但在端口21和#34上连接;不是FTP的东西。
  • 端口上的数据连接< 1024是不常见的,因此很难相信具有该要求的那个也意味着。对于需要主动FTP连接的人来说,现在每个人都试图避免,因为他们很难配置。在端口上打开侦听器< 1024将需要Unix系统上的root权限,这不太可能只是为了进行FTP传输。

您还说过您实际尝试发送到服务器的命令是保密的。我觉得很难相信,但如果确实这样,那就意味着我们正在谈论使用自己的FTP命令集的非标准FTP服务器,即普通的FTP客户端可能无法做到你需要什么。

回到那个给你这个要求的那个人,问一下他说的是什么,理想情况下如何做一个例子,让我们说使用FTP客户端来使用Windows Command-Shell。