.net.Socket 網路實作

TCP Socket

Socket / ServerSocket - C/S 架構

使用 TCP 作為通信機制,Client / Server 架構對應到SocketServerSocket 兩個物件。

  • 開始連接

    • Server端用 listen() 來監聽 Client端,設定對應的 port 與 domain

    • Client端用 Socket 物件 和 Server端做連接,連接 Server 的 domain 與開啟的 port

      連接後,會用 accept() 來取得和 Client 端連線的物件。

每一個 Client 連線就用一個執行緒來處理,也是 BIO 的阻塞原因

  • 完成連接,就能使用 I/O 進行連接,即 socket物件 的 InputStream() / OutputStream()。

  • 結束連接,呼叫 close() 來關閉所有使用到的 Socket物件。

https://enginebai.com/2016/07/03/java-socket-programming/#more-567

UDP Socket

DatagramSocket / DatagramPacket

使用 UDP 作為通信機制。

DatagramSocket 本身只是港口,不維護狀態,唯一作用就是接收和傳送資料

DatagramPacket 物件,用於處理數據,並自身決定資料的目的地。

  • 連接準備,雙方建立港口 DatagramSocket物件,設定對應的 port 與 domain

  • 接收 - 建立接收物件

    • 透過 DatagramPacket 物件建立接收到的位元組與資料長度

    • socket 需開啟 receive() 接收物件,會一直開啟直到接收到資料

  • 傳遞 - 建立傳遞物件

    • 透過 DatagramPacket 物件建立內容與目的地,即位元組、資料長度、IP 和 Port

    • socket 需開啟 send() 傳遞物件,持續開啟直到成功傳送

MulticastSocket

可實現多點廣播。

參考資料

https://enginebai.com/2016/07/03/java-socket-programming/#more-567

https://www.itread01.com/content/1550114641.html

Last updated

Was this helpful?