我正在連接並在端口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