我正在连接并在端口21上登录到服务器。接下来我要做的是发送一个命令字符串,但是我被指示通过端口发送此命令50.更改FTPClient端口以发送命令
如何在端口21连接时将端口更改为50?
我试图连接到端口50上的服务器,并且连接被拒绝。我尝试发送命令,同时连接端口21使用ftpClient.sendCommand
和我得到一个回复代码500 Unknown command
我正在连接并在端口21上登录到服务器。接下来我要做的是发送一个命令字符串,但是我被指示通过端口发送此命令50.更改FTPClient端口以发送命令
如何在端口21连接时将端口更改为50?
我试图连接到端口50上的服务器,并且连接被拒绝。我尝试发送命令,同时连接端口21使用ftpClient.sendCommand
和我得到一个回复代码500 Unknown command
通常当您连接,服务器控制端口分配。因此,当您发出pasv命令(被动模式)时,它通常会发送回IP /端口以连接到数据连接。我不知道有什么可以让你做你想做的事。服务器可以限制这些类型的端口范围。这是一个很好的解释。
您可以发送PORT命令连接到端口50特别,但它确实不寻常的做这样的事情。
**编辑**
有两两件事你可以试试,我从来没有使用,也可以,所以因人而异。
在主动模式下,客户端为服务器提供一个连接端口。
尝试将默认端口设置为50并打开活动模式。希望这是在你的内部网络上,因为这永远不会超过安全的防火墙请求。
client.setDefaultPort(50);
client.enterLocalActiveMode(); // Apache FTPClient
对于被动模式,您可以尝试设置活动端口范围。
client.setActivePortRange(50, 50)
client.enterLocalPassiveMode();
您应该询问服务器期望的模式。
谢谢我在发送命令之前使用'enterLocalPassiveMode()'。当我使用'ftpClient.getReplyString()'' – steam1234322
@ steam1234322时,我似乎仍未知道500个未知数。更新了答案 – Mike
@ steam1234322您也可以打开连接并手动将命令发送到客户端。 sendCommand(FTPCmd.PORT,“50”);但在那个时候,你可能需要做一些编码来管理连接。 – Mike
你应该回去谁告诉你这个要求的一个,并询问细节,因为 - 说白了 - 整个事情没有任何真正意义上的:
你也说过你实际尝试发送给服务器的命令是保密的。我觉得很难相信,但如果真的这意味着我们正在讨论一个使用自己的FTP命令的非标准FTP服务器,即普通的FTP客户端可能无法做到你需要。
所以回到给你这个要求的人,问他说的是什么,理想情况下用一个例子说明如何去做,比如说使用Windows Command-Shell附带的FTP客户端。
你正在发送什么命令,你连接了什么FTP服务器,以及你正在使用的ftp客户端是什么? – Lothar
不幸的是,我不能透露这些信息。我使用的是Apache公共FTP客户端 – steam1234322