我陷入了一個問題。根據我最新的要求,我必須將文件上傳到ftp或sftp服務器。問題是我不知道服務器是ftp還是sftp。在運行時,客戶端將提供服務器的ip和其他詳細信息,我必須上傳文件。所以,在運行時,我必須明白服務器是ftp或sftp,然後需要採取相應措施。那麼,這有什麼出路嗎?文件上傳到ftp和sftp
回答
默認情況下,SFTP(SSH文件傳輸協議)使用端口22。
有些人使用「SFTP」表示FTPS(FTP-over-TLS)。在這種情況下,您有兩種選擇:顯式TLS和隱式TLS。隱式TLS默認使用端口990。在顯式模式下,客戶端默認連接到端口21,然後通知服務器在現有連接上啓動TLS握手。
平原FTP使用端口21
現在,用戶可以能夠明確指定要使用的協議。
最後,您可以嘗試連接,從套接字中獲取第一行數據並對其進行分析。在FTP/FTPS第一行應該以220SP開頭(SP代表空格,字符代碼爲0x20)。其他響應代碼也可以給出。在SSH/SFTP中,該行以「SSH-2.0-」開頭。
ftp中的FTP或SFTP,並且sftp將使用不同的端口(分別爲21和22)。這應該是「服務器的ip和其他細節」的一部分。那麼,如何從那裏獲取代碼?你能舉個例子嗎? – Souvik 2013-05-14 06:14:29
@Souvik我不知道我理解你的問題。你想從哪裏得到哪些代碼? – 2013-05-14 06:15:39
我的客戶端只會在運行時爲我提供IP(不是端口,如果是FTP,我必須使其爲21或22)用戶名和密碼,但沒有關於服務器的信息是ftp或sftp。我必須連接到服務器,並且需要確定服務器是FTP服務器還是SFT服務器。那麼,是否有任何可以用java編寫的程序來識別它。 – Souvik 2013-05-14 12:21:26
ftp和sftp將使用不同的端口(分別爲21和22)。這應該是「服務器的ip和其他細節」的一部分。
我的程序將根據服務器確定端口。那麼是否有任何方法來識別服務器 – Souvik 2013-05-14 06:15:30
- 1. Rebex:將文件從Ftp/Sftp傳輸到Ftp/Sftp
- 2. FTP:上傳文件到FTP和驗證
- 3. 下載並上傳沒有ftp和sftp的文件
- 4. JSP文件上傳。從FTP到SFTP的轉換
- 5. SFTP文件上傳
- 6. 在Opensift 3上持久捲上的文件上傳(SFTP,FTP等)
- 7. 上傳文件到FTP
- 8. 上傳文件到FTP C#
- 9. FTP/SFTP到AWS
- 10. 上傳使用SFTP從FTP站點下載文件
- 11. SFTP文件同時上傳和下載
- 12. 從內存流上傳文件到SFTP
- 13. 從jenkins上傳文件到sftp
- 14. bash腳本將文件上傳到sftp
- 15. 使用PowerShell將文件上傳到SFTP
- 16. SAS上傳文件到SFTP站點
- 17. 將文件上傳到SFTP服務器
- 18. Ftp文件上傳
- 19. 使用SFTP上傳文件
- 20. 上傳文件使用SFTP
- 21. 在Mac上比較本地和遠程(FTP/SFTP)文件
- 22. 用PHP和FTP上傳大文件
- 23. Objective-C FTP上傳和下載文件
- 24. busboy「文件」gm到ftp上傳
- 25. 將文件上傳到FTP目的地
- 26. 上傳文件到通過FTP
- 27. 從eclipse上傳文件到ftp
- 28. c#上傳文件到FTP服務器
- 29. 上傳文件到FTP服務器
- 30. C++的文件上傳到FTP
獲取ftp和sftp客戶端,嘗試以任一方式連接,並查看所發生的事情?這不是火箭科學......如果前門(ftp)被鎖定,請回過頭去嘗試sftp。 – 2013-05-13 18:33:17
在研究這個問題時,一定要確定它是否真的是'sftp',而不是'ftps'或'ftp over ssh'。 – BLuFeNiX 2013-05-13 18:47:58