写出要求编写一个程序模拟两人微信聊天功能。在实现案例时,要求使用多线程与UDP通信完成消息的发送和接收。的Java代码
时间: 2024-03-01 22:52:47 浏览: 173
好的,以下是一个简单的Java代码示例,实现两人微信聊天功能,使用多线程与UDP通信完成消息的发送和接收:
```java
import java.io.IOException;
import java.net.*;
public class ChatApp {
private static final int PORT = 12345;
private static final String HOSTNAME = "localhost"; // 将此处的 localhost 修改为实际的主机名或IP地址
public static void main(String[] args) {
try {
InetAddress address = InetAddress.getByName(HOSTNAME);
DatagramSocket socket = new DatagramSocket();
Thread senderThread = new Thread(() -> {
try {
while (true) {
String message = /*获取用户输入的消息*/;
byte[] buffer = message.getBytes();
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, address, PORT);
socket.send(packet);
}
} catch (IOException e) {
e.printStackTrace();
}
});
Thread receiverThread = new Thread(() -> {
try {
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("收到消息:" + message);
}
} catch (IOException e) {
e.printStackTrace();
}
});
senderThread.start();
receiverThread.start();
} catch (UnknownHostException | SocketException e) {
e.printStackTrace();
}
}
}
```
在这个示例中,我们创建了一个 `DatagramSocket` 对象,用于发送和接收消息。我们使用了两个线程,一个用于发送消息,另一个用于接收消息。`senderThread` 从用户输入中获取消息,将消息打包成 `DatagramPacket` 对象,并通过 `DatagramSocket` 对象发送出去;`receiverThread` 监听 `DatagramSocket` 对象的接收端口,并从接收到的数据包中提取出消息内容。
当你运行这个程序时,它将会在控制台输出所有收到的消息。你可以在控制台中输入消息,然后按回车键发送消息。
阅读全文