ftp學習之兩個套接字

2021-06-22 14:00:12 字數 1030 閱讀 9198

本地socket連線到伺服器21號口後,若傳送list命令,返回資訊是要先設定pasv/port模式,需要再開啟乙個資料鏈路,然後通過主socket(連線伺服器21號)傳送list命令,並通過新開的資料鏈路接收資料;
需要有兩個套接字,乙個用於命令(cmdsocket),乙個用於資料(datasocket)

cmdsocket與ftp伺服器21埠(如果ftp伺服器沒做特殊設定的話)連線,datasocket因pasv和port模式不同,而有所差別。

pasv模式:

1)通過命令cmdsocket套接字傳送pasv

2)server端會返回ip位址和專門的資料傳輸埠號

3)在命令套接字cmdsocket上傳送list命令

4)本地建立datasocket連線server提供的資料傳輸埠號(此步中,本地作為客戶端)

5)server端通過cmdsocket返回150 開頭的響應(需要讀取cmdsocket)

6)本地通過datasocket接收資料,即通過datasocket的inputstream讀取datasocket中的資料

7)傳輸完畢(read返回-1),cmdsocket會返回226 開頭的響應,關閉連線即可

port模式:

1)在本地啟動某個埠的監聽(本地作為服務端,使用serversocket)

2)通過命令cmdsocket套接字傳送port,port命令後加引數:本地ip+剛啟動監聽的埠

3)server端響應200

4)在cmdsocket上傳送list命令

5)呼叫serversocket.accept()獲得資料套接字datasocket(ftp server作為客戶連線本地的埠)

6)server端通過cmdsocket返回150 開頭的響應(需要讀取cmdsocket)

7)本地通過datasocket接收資料,即通過datasocket的inputstream讀取datasocket中的資料

8)傳輸完畢(read返回-1),cmdsocket會返回226 開頭的響應,關閉連線即可

套接字(一) 套接字相關的概念和兩個主要的套接字類

tcp ip網路協議只有四層。協議層名 功能描述 數字鏈路層 網絡卡等網路應用裝置以及驅動程式 網路層 ip協議等網際網路協議 數字傳輸層 為應用程式提供通訊方法,通常為tcp udp協議 應用層 負責處理應用程式的實際使用協議,可以是ftp smtp等 c s程式設計模型是基於可靠連線的通訊模型。...

套接字學習之tcp連線的建立

需要重新拿起書本複習複習,所以就有了下面的博文,希望我能堅持學習,堅持努力。tcp連線的建立總的來說就是乙個跟 系統類似的套路 對於伺服器 1.建立乙個socket用於通訊 類似listenfd socket af inet,sock stream,0 2.繫結乙個位址好讓別人能找到你 類似 str...

Platform Builder實踐之兩個要點

關於登錄檔在前面的文章中已經介紹過了,這裡只講述如何實現永久儲存登錄檔資料。登錄檔型別分為基於物件儲存的登錄檔和基於hive的登錄檔,在定製核心的時候只能選擇其中一種。從理論上講這兩種登錄檔都能夠實現永久儲存登錄檔數 據,但是採用不同的型別會影響ce的啟動順序和啟動速度,還會影響記憶體的使用量。我還...