要接收UDP報文,可以使用Java的DatagramSocket類。
首先,創建一個DatagramSocket對象來監聽指定的UDP端口。例如,要監聽端口號為9999的UDP報文,可以使用以下代碼:
int port = 9999;
DatagramSocket socket = new DatagramSocket(port);
然后,創建一個字節數組來存儲接收到的數據。可以根據實際情況調整數組的大小。
byte[] buffer = new byte[1024];
接下來,創建一個DatagramPacket對象用于接收數據。在構造方法中,傳入之前創建的字節數組和數組的長度。
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
接著,使用DatagramSocket的receive()方法接收UDP報文。此方法會阻塞,直到接收到報文為止。
socket.receive(packet);
最后,可以通過DatagramPacket的getData()方法獲取接收到的數據,并根據實際情況進行處理。
byte[] receivedData = packet.getData();
int length = packet.getLength();
String message = new String(receivedData, 0, length);
完整的代碼如下:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDPReceiver {
public static void main(String[] args) {
try {
int port = 9999;
DatagramSocket socket = new DatagramSocket(port);
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet);
byte[] receivedData = packet.getData();
int length = packet.getLength();
String message = new String(receivedData, 0, length);
System.out.println("Received message: " + message);
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
注意:以上代碼只能接收一個UDP報文。如果需要連續接收多個報文,可以將接收報文的代碼放在一個循環中。