天天看點

Java網絡教程-基礎

java提供了非常易用的網絡api,調用這些api我們可以很友善的通過建立tcp/ip或udp套接字,在網絡之間進行互相通信,其中tcp要比udp更加常用,但在本教程中我們對這兩種方式都有說明。

在網站上還有其他三個與java網絡相關的教程,如下:

此外,我們還可以使用java nio api中相關的網絡類,用法與java網絡api基本類似,java nio api可以以非阻塞模式工作,在某些特定的場景中使用非阻塞模式可以獲得較大的性能提升。

java tcp網絡基礎

通常情況下,用戶端打開一個連接配接到伺服器端的tcp/ip連接配接,然後用戶端開始與伺服器之間通信,當通信結束後用戶端關閉連接配接,過程如下圖所示:

Java網絡教程-基礎

​用戶端通過一個已打開的連接配接可以發送不止一個請求。事實上在伺服器處于接收狀态下,用戶端可以發送盡可能多的資料,伺服器也可以主動關閉連接配接。

java中socket類和serversocket類

關于socket類和serversocket類會在後面的文章中有詳細的介紹。

java udp網絡基礎

udp的工作方式與tcp相比略有不同。使用udp通信時,在用戶端與伺服器之間并沒有建立連接配接的概念,用戶端發送到伺服器的資料,伺服器可能(也可能并沒有)收到這些資料,而且用戶端也并不知道這些資料是否被伺服器成功接收。當伺服器向用戶端發送資料時也是如此。

正因為是不可靠的資料傳輸,udp相比與tcp來說少了很多的協定開銷。