首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java Socket 程式設計(四):迭代式與並發伺服器、DatagramSocket 核心類別

     編輯:Java 相關知識

伺服器架構演進

迭代式伺服器

循序處理請求,處理完一個再接下一個。簡單但無法應付並發,僅適合教學或極低負載場景。

並發伺服器

主執行緒負責 accept(),每新連線派生工作執行緒處理。商業級伺服器皆採此架構。

// 並發伺服器骨架
while (true) {
    Socket client = serverSocket.accept();
    new Thread(() -> handleClient(client)).start();
}

DatagramSocket 核心特性

  • 客戶端與伺服器使用同一個類別
  • 伺服器建構子需指定埠:new DatagramSocket(4545)
  • 客戶端可不指定埠,由 OS 自動分配:new DatagramSocket()
  • 無串流介面,改用 DatagramPacket 收發

DatagramPacket 詳細解析

接收封包

byte[] buf = new byte[512];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
socket.receive(packet); // 阻塞直到收到資料

發送封包

InetAddress addr = InetAddress.getByName("target.host");
int port = 1234;
byte[] data = "message".getBytes();
DatagramPacket packet = new DatagramPacket(data, data.length, addr, port);
socket.send(packet);

InetAddress 工廠方法總表

方法用途回傳
getByName(host)解析主機名,回傳第一個 IPInetAddress
getAllByName(host)解析主機名,回傳所有 IPInetAddress[]
getLocalHost()取得本機位址InetAddress

所有方法均為 static,且可能拋出 UnknownHostException。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved