用Java实现一个基于UDP协议通信的简易一对一聊天室
时间: 2024-02-01 12:13:17 浏览: 83
下面是一个简单的基于UDP协议通信的一对一聊天室的Java代码实现。
客户端代码:
```java
import java.net.*;
import java.util.Scanner;
public class UDPClient {
public static void main(String[] args) throws Exception {
DatagramSocket socket = new DatagramSocket(); // 创建UDP Socket
Scanner scanner = new Scanner(System.in);
InetAddress address = InetAddress.getByName("127.0.0.1"); // 服务器IP地址
int port = 9999; // 服务器端口号
while (true) {
String message = scanner.nextLine(); // 读取用户输入的消息
byte[] data = message.getBytes(); // 将消息转为字节数组
DatagramPacket packet = new DatagramPacket(data, data.length, address, port); // 创建待发送的数据包
socket.send(packet); // 发送数据包
if (message.equals("bye")) {
break;
}
byte[] buffer = new byte[1024]; // 创建接收消息的缓冲区
packet = new DatagramPacket(buffer, buffer.length); // 创建接收数据包
socket.receive(packet); // 接收数据包
String response = new String(packet.getData(), 0, packet.getLength()); // 解析接收到的消息
System.out.println("Server: " + response);
}
socket.close(); // 关闭UDP Socket
}
}
```
服务端代码:
```java
import java.net.*;
public class UDPServer {
public static void main(String[] args) throws Exception {
DatagramSocket socket = new DatagramSocket(9999); // 创建UDP Socket并绑定到9999端口
while (true) {
byte[] buffer = new byte[1024]; // 创建接收消息的缓冲区
DatagramPacket packet = new DatagramPacket(buffer, buffer.length); // 创建接收数据包
socket.receive(packet); // 接收数据包
String message = new String(packet.getData(), 0, packet.getLength()); // 解析接收到的消息
System.out.println("Client: " + message);
if (message.equals("bye")) {
break;
}
InetAddress address = packet.getAddress(); // 获取客户端IP地址
int port = packet.getPort(); // 获取客户端端口号
byte[] data = message.getBytes(); // 将消息转为字节数组
packet = new DatagramPacket(data, data.length, address, port); // 创建待发送的数据包
socket.send(packet); // 发送数据包
}
socket.close(); // 关闭UDP Socket
}
}
```
运行以上代码后,可以在客户端输入消息并发送给服务器,服务器会将消息原封不动地返回给客户端。当客户端输入“bye”时,客户端和服务器都会退出。
阅读全文