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

Java數據報通訊實戰:DatagramSocket與DatagramPacket完整流程解析

     編輯:Java 程式設計入門

數據報通訊特點

數據報(Datagram)是網絡層獨立傳輸單元,包含地址信息,無需建立連接,不可靠(不保證到達、順序、內容完整)。適用於對質量要求不高、追求低延遲的場景。Java java.net包提供DatagramSocket和DatagramPacket兩大核心類支持。

客戶端工作流程詳解

1. 創建DatagramSocket

// 綁定任意可用端口
DatagramSocket socket = new DatagramSocket();

// 或指定本地端口
DatagramSocket socket = new DatagramSocket(int port);

若端口被佔用或無法打開拋出SocketException。

2. 構建發送端DatagramPacket

// 參數:數據緩衝區、長度、目標IP、目標端口
DatagramPacket packet = new DatagramPacket(
    byte[] buffer, int length, InetAddress address, int port
);

常用獲取信息方法:

  • getData():返回數據字節數組
  • getLength():返回數據長度
  • getAddress():返回目標/發送方IP
  • getPort():返回目標/發送方端口

3. 發送數據報

socket.send(packet);  // 將封裝數據發出

4. 接收回應數據報

// 僅指定緩衝區與長度,不指定目標地址
DatagramPacket receivePacket = new DatagramPacket(buffer, length);
socket.receive(receivePacket);  // 阻塞直到收到數據
// 接收後,receivePacket包含發送方IP、端口及數據

5. 處理數據與關閉

解析緩衝區數據獲取服務結果。通訊結束調用socket.close()釋放資源(良好習慣,雖JVM會自動回收)。

簡易客戶端Applet示例

import java.applet.*;
import java.net.*;
import java.io.*;

public class DatagramClient extends Applet {
    // 初始化UI、Socket、發送/接收邏輯...
    // 因篇幅限制此處省略完整代碼,核心流程如上所述
}

該示例以Applet形式演示客戶端與服務器簡單交互,直觀展示數據報通訊全過程。

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