天天看點

JAVA-Socket通信筆記

  協定相當于互相通信的程式間達成的一種約定,它規定了分組封包的結構、交換方式、包含的意義以及怎樣對封包所包含的資訊進行解析,TCP/IP 協定族有 IP 協定、TCP 協定和 UDP 協定。現在 TCP/IP 協定族中的主要 socket 類型為流套接字(使用 TCP 協定)和資料報套接字(使用 UDP 協定)。

  Socket套接字 是面向連接配接的通信,基于TCP/IP協定提供了穩定的支援(Ps: TCP/IP 傳輸效率低于 UDP),TCP/IP 提供了Socket和Serversocket兩個類, 使用 Serversocket 執行個體來監聽端口是否 有用戶端請求,并通過 accept()方法 來傳回一個Socket 執行個體,用戶端的socket和服務端的socket 就這樣建立了連接配接,每個socket 有自己的io流 ,那麼服務端的輸入流對應用戶端的輸出流,用戶端的輸出流對應服務端的輸入流,在這裡輸入流 我們采用(BufferedReader)包裝流,輸入采用(PrintStream)包裝流,通過包裝流 包裝 輸入輸初流,可以友善程式資料的使用。

典型的 TCP 服務端執行如下兩步操作:

建立一個 ServerSocket 執行個體并指定本地端口,用來監聽用戶端在該端口發送的 TCP 連接配接請求;

重複執行:

調用 ServerSocket 的 accept()方法以擷取用戶端連接配接,并通過其傳回值建立一個 Socket 執行個體;

為傳回的 Socket 執行個體開啟新的線程,并使用傳回的 Socket 執行個體的 I/O 流與用戶端通信; 通信完成後,使用 Socket 類的 close()方法關閉該用戶端的

套接字連接配接。

好了話不多說,下面貼程式。

***服務端代碼***

*** 然後是 處理連接配接後socket 的子線程***

*** 最後是 用戶端代碼 ***

好了 ,下面我們來運作 看看結結果。

第一個控制台是 服務端

第二個控制台是 用戶端1

第三個控制台是 用戶端2

JAVA-Socket通信筆記
JAVA-Socket通信筆記
JAVA-Socket通信筆記
JAVA-Socket通信筆記
JAVA-Socket通信筆記
JAVA-Socket通信筆記
JAVA-Socket通信筆記
JAVA-Socket通信筆記

這樣我們就實作了 一個簡單的基于TCP/IP協定的socket多用戶端通信。

本文轉自帥氣的頭頭部落格51CTO部落格,原文連結http://blog.51cto.com/12902932/1925685如需轉載請自行聯系原作者

sshpp