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

Java DatagramSocket 無連線通訊實作指南(下)

     編輯:Java 相關知識

DatagramSocket 類別

DatagramSocket 用於 UDP 通訊。客戶端用無參數建構子繫結任意埠口;伺服器端用 DatagramSocket(int port) 繫結固定埠口。失敗拋出 SocketException。

核心方法

  • send(DatagramPacket):發送資料包
  • receive(DatagramPacket):接收資料包(阻塞)

客戶端範例:DGSClient

DatagramSocket socket = new DatagramSocket();
byte[] buffer = "Send me a datagram".getBytes();
InetAddress ia = InetAddress.getByName("localhost");
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, ia, 10000);
socket.send(packet);

byte[] recvBuf = new byte[100];
DatagramPacket recvPacket = new DatagramPacket(recvBuf, recvBuf.length, ia, 10000);
socket.receive(recvPacket);
System.out.println(new String(recvPacket.getData()));
socket.close();

伺服器端範例:DGSServer


DatagramSocket socket = new DatagramSocket(10000);
byte[] data = new byte[100];
DatagramPacket packet = new DatagramPacket(data, data.length);
while (true) {
    socket.receive(packet);
    System.out.println(new String(data));
    socket.send(packet); // 回應
}

執行步驟

  1. 先啟動伺服器:java DGSServer
  2. 再啟動客戶端:java DGSClient(跨主機時加主機名/IP)

關鍵差異:UDP vs TCP

特性DatagramSocket (UDP)Socket (TCP)
連線導向無有
可靠性不保證保證
順序可能亂序保證順序
適用場景即時影音、DNS、廣播檔案傳輸、Web、郵件
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved