共計 1657 個字符,預(yù)計需要花費 5 分鐘才能閱讀完成。
Java 中實現(xiàn) UDP 通信可以使用 Java 的 java.net 包中的 DatagramSocket 和 DatagramPacket 類。
- 創(chuàng)建一個 DatagramSocket 對象,指定要使用的端口號:
DatagramSocket socket = new DatagramSocket(8888);
- 創(chuàng)建一個字節(jié)數(shù)組用于接收數(shù)據(jù),創(chuàng)建一個 DatagramPacket 對象,用于接收數(shù)據(jù):
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
- 使用 DatagramSocket 的 receive() 方法接收數(shù)據(jù):
socket.receive(packet);
- 使用 DatagramPacket 的 getData() 方法獲取接收到的數(shù)據(jù):
byte[] receivedData = packet.getData();
- 創(chuàng)建一個字節(jié)數(shù)組用于發(fā)送數(shù)據(jù),創(chuàng)建一個 DatagramPacket 對象,用于發(fā)送數(shù)據(jù):
String message = "Hello, UDP!";
byte[] sendData = message.getBytes();
InetAddress address = InetAddress.getByName("localhost");
int port = 8888;
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, address, port);
- 使用 DatagramSocket 的 send() 方法發(fā)送數(shù)據(jù):
socket.send(sendPacket);
- 關(guān)閉 DatagramSocket 對象:
socket.close();
完整示例代碼如下:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UdpExample {public static void main(String[] args) {try {// 創(chuàng)建 DatagramSocket 對象,指定端口號
DatagramSocket socket = new DatagramSocket(8888);
// 創(chuàng)建接收數(shù)據(jù)的字節(jié)數(shù)組和 DatagramPacket 對象
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
// 接收數(shù)據(jù)
socket.receive(packet);
// 獲取接收到的數(shù)據(jù)
byte[] receivedData = packet.getData();
String receivedMessage = new String(receivedData, 0, packet.getLength());
System.out.println("Received message: " + receivedMessage);
// 準(zhǔn)備發(fā)送數(shù)據(jù)
String message = "Hello, UDP!";
byte[] sendData = message.getBytes();
InetAddress address = InetAddress.getByName("localhost");
int port = 8888;
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, address, port);
// 發(fā)送數(shù)據(jù)
socket.send(sendPacket);
// 關(guān)閉 DatagramSocket
socket.close();} catch (Exception e) {e.printStackTrace();
}
}
}
注意:在實際應(yīng)用中,通常需要使用多線程來實現(xiàn)同時進(jìn)行接收和發(fā)送操作。
丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!
正文完
發(fā)表至: Java
2023-12-12