前言
上一篇我们共同学习了UDP消息发送,本篇我们讲学习UDP的聊天实现。
一、UDP聊天实现过程
- 发送方:
1、创建socket连接。
2、读取控制台输入的数据。
3、将控制台的数据封装成包。
4、发送包。
5、循环监听3、4两个步骤,并判断当达到设定的条件时退出循环。
6、关闭资源。 - 接收方:
1、创建socket连接,开放端口。
2、接收数据。
3、将数据转换为字符串并打印。
4、循环监听2、3两个步骤,并判断当达到设定的条件时退出循环。
5、关闭资源。
二、代码示例
1.UDP聊天实现
代码如下(示例):
客户端:UdpSenderDemo01类
public class UdpSenderDemo01 {
public static void main(String[] args) throws Exception{
DatagramSocket socket = new DatagramSocket();
//准备数据,控制台读取:System.in
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
while(true) {
String data = bufferedReader.readLine();
byte[] datas = data.getBytes();
DatagramPacket packet = new DatagramPacket(datas, 0, datas.length, new InetSocketAddress("localhost", 6666));
socket.send(packet);
if(data.equals("bye")){
break;
}
}
socket.close();
}
}
服务端:UdpReceiveDemo01类
public class UdpReceiveDemo01 {
public static void main(String[] args) throws Exception{
DatagramSocket socket = new DatagramSocket(6666);
while(true) {
//接收数据
byte[] container = new byte[1024];
DatagramPacket packet = new DatagramPacket(container, 0, container.length);
socket.receive(packet);
//断开连接
byte[] data = packet.getData();
String receiveData = new String(data, 0, data.length);
System.out.println(receiveData);
if (receiveData.equals("bye")) {
break;
}
}
socket.close();
}
}
运行结果: