本地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的啟動順序和啟動速度,還會影響記憶體的使用量。我還...