我正在连接并登录到端口21上的服务器。我接下来要做的是发送命令字符串,但是我已经被指示通过端口50发送此命令。
如何在端口21上连接时将端口更改为50?
我尝试在端口50上连接到服务器,并且拒绝接受。我尝试使用ftpClient.sendCommand
在端口21上连接时发送命令,我收到了回复代码500 Unknown command
答案 0 :(得分:0)
通常在连接时,服务器控制端口分配。因此,当您发出pasv命令(被动模式)时,它通常会向您发送一个IP /端口以连接到数据连接。我不知道任何可以让你做你想做的事。服务器可以限制这些类型的端口范围。这是一个很好的解释。
你可能能够发送一个PORT命令专门连接到端口50,但这样做是非常不寻常的。
**编辑**
你可以尝试两件事,我从未使用过,所以YMMV。
在活动模式下,客户端为服务器提供连接的端口。
尝试将默认端口设置为50并启用活动模式。希望这是在你的内部网络上,因为这永远不会超过防火墙请求的安全性。
client.setDefaultPort(50);
client.enterLocalActiveMode(); // Apache FTPClient
对于被动模式,您可以尝试设置活动端口范围。
client.setActivePortRange(50, 50)
client.enterLocalPassiveMode();
您应该询问服务器期望的模式。
答案 1 :(得分:0)
你应该回到那个告诉你这个要求的人,并询问具体细节,因为 - 直言不讳 - 整个事情并没有真正意义:
您还说过您实际尝试发送到服务器的命令是保密的。我觉得很难相信,但如果确实这样,那就意味着我们正在谈论使用自己的FTP命令集的非标准FTP服务器,即普通的FTP客户端可能无法做到你需要什么。
回到那个给你这个要求的那个人,问一下他说的是什么,理想情况下如何做一个例子,让我们说使用FTP客户端来使用Windows Command-Shell。