共計 1165 個字符,預(yù)計需要花費 3 分鐘才能閱讀完成。
要接收 UDP 報文,可以使用 Java 的 DatagramSocket 類。
首先,創(chuàng)建一個 DatagramSocket 對象來監(jiān)聽指定的 UDP 端口。例如,要監(jiān)聽端口號為 9999 的 UDP 報文,可以使用以下代碼:
int port = 9999;
DatagramSocket socket = new DatagramSocket(port);
然后,創(chuàng)建一個字節(jié)數(shù)組來存儲接收到的數(shù)據(jù)。可以根據(jù)實際情況調(diào)整數(shù)組的大小。
byte[] buffer = new byte[1024];
接下來,創(chuàng)建一個 DatagramPacket 對象用于接收數(shù)據(jù)。在構(gòu)造方法中,傳入之前創(chuàng)建的字節(jié)數(shù)組和數(shù)組的長度。
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
接著,使用 DatagramSocket 的 receive() 方法接收 UDP 報文。此方法會阻塞,直到接收到報文為止。
socket.receive(packet);
最后,可以通過 DatagramPacket 的 getData() 方法獲取接收到的數(shù)據(jù),并根據(jù)實際情況進行處理。
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 報文。如果需要連續(xù)接收多個報文,可以將接收報文的代碼放在一個循環(huán)中。
丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!
正文完
發(fā)表至: Java
2023-12-13