TCP核心API

一、Socket

1.1

Socket()

創建一個Socket

主要用於創建客戶端的連接,客戶端創建的時候會創建一個無連接、無綁定的空狀態Socket

1.2

bind()

綁定一個Socket到一個本地地址和端口上

1.3

connect()

連接到遠程套接字

1.4

write()

把數據寫入到Socket輸出流

1.5

read()

從Socket輸入流讀取數據

二、ServerSocket

2.1

ServerSocket()

創建一個服務端的socket

2.2

bind()

綁定一個ServerSocket

2.3

accept()

接收一個新的連接

此時服務端會進入到一個阻塞狀態,直到有客戶端到達爲止。當然也可以設置阻塞的超時時間,默認的超時時間都是無限長

。當有一個客戶端到達,纔會進行後續的Socket的創建。

服務端的一個簡單流程就是,一個ServerSocket綁定到自己的端口之後,通過accept()會進入到accept狀態。如果此時有新的客戶端到達,那麼客戶端會創建一個對應的、相匹配的Socket,進入到後續的發送和接收的流程。當然,也可以選擇是否繼續accept下一個套接字,也可以直接關閉,不進行後續的套接字的等待。

2.4

write()

把數據寫入到Socket輸出流

2.5

read()

從Socket輸入流讀取數據

 

三、客戶端創建流程

 

四、服務端創建流程

五、Socket與進程之間的關係

默認的,每一個進程都可以創建一個Socket,甚至一個進程可以創建多個Socket連接。

那麼,可以藉助Socket完成進程與進程之間數據的傳輸。

如果A進程和B進程需要交互數據,那麼可以通過Socket連接建立數據傳輸。A進程將數據丟給TCP後,TCP內部的buffer和數據並不是由自己的進程所維護的,它是由操作系統維護的。操作系統在傳輸到下一個進程之後,另一個B進程的TCP的buffer和TCP底層的一些數據也是由操作系統維護的。TCP在得到信息之後,會把信息拋給上層,也就是B進程的process。

進程之間的交互不僅僅指自己電腦的進程與進程之間,也可以是自己電腦的進程和別人電腦的進程之間進行交互。

它們具體的交互就要通過Intnet網絡進行交互。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章