java udp 双向通讯
时间: 2023-09-19 11:11:54 浏览: 41
在Java中实现UDP双向通信,您需要创建一个UDP服务器和一个UDP客户端。以下是一个简单的示例代码,演示了如何实现UDP双向通信:
UDP服务器端代码:
```java
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPServer {
public static void main(String[] args) {
try {
// 创建服务器端UDP Socket
DatagramSocket serverSocket = new DatagramSocket(9876);
// 创建接收数据的字节数组
byte[] receiveData = new byte[1024];
while (true) {
// 创建接收数据的DatagramPacket
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
// 接收数据
serverSocket.receive(receivePacket);
// 从DatagramPacket中获取数据
String clientMessage = new String(receivePacket.getData(), 0, receivePacket.getLength());
System.out.println("接收到客户端消息: " + clientMessage);
// 获取客户端的地址和端口号
InetAddress clientAddress = receivePacket.getAddress();
int clientPort = receivePacket.getPort();
// 发送响应给客户端
String serverMessage = "Hello from server";
byte[] sendData = serverMessage.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, clientAddress, clientPort);
serverSocket.send(sendPacket);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
UDP客户端代码:
```java
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPClient {
public static void main(String[] args) {
try {
// 创建客户端UDP Socket
DatagramSocket clientSocket = new DatagramSocket();
// 获取服务器的地址和端口号
InetAddress serverAddress = InetAddress.getByName("localhost");
int serverPort = 9876;
// 发送数据给服务器
String clientMessage = "Hello from client";
byte[] sendData = clientMessage.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, serverAddress, serverPort);
clientSocket.send(sendPacket);
// 创建接收数据的字节数组
byte[] receiveData = new byte[1024];
// 创建接收数据的DatagramPacket
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
// 接收服务器的响应
clientSocket.receive(receivePacket);
// 从DatagramPacket中获取响应数据
String serverMessage = new String(receivePacket.getData(), 0, receivePacket.getLength());
System.out.println("接收到服务器消息: " + serverMessage);
// 关闭客户端UDP Socket
clientSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
以上代码创建了一个简单的UDP服务器和UDP客户端。客户端向服务器发送一条消息,服务器接收到消息后发送响应给客户端,然后客户端接收服务器的响应消息并打印出来。
您可以在代码中修改服务器和客户端的地址和端口号,以适应您的实际需求。
希望对您有帮助!如果还有其他问题,请随时提问。