0
点赞
收藏
分享

微信扫一扫

UDP通信程序练习(实现模拟聊天室)


目录

​​一、需求​​

​​二、代码​​

​​UDP发送数据:​​

​​UDP接收数据:​​

​​三、运行结果​​

​​发送端:​​

​​ 接收端:​​

​​ 模拟聊天室:开启一个接收端,三个发送端,实现模拟聊天室​​

一、需求

UDP发送数据:数据来自键盘录入,直到输入的数据是886,发送数据结束

UDP接收数据:因为接收端不知道发送端什么时候停止发送,故采用死循环接收

二、代码

UDP发送数据:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.nio.charset.StandardCharsets;

/*
UDP发送数据:
数据来自于键盘录入,直到输入的数据是886,发送数据结束
*/
public class SendDemo001 {
public static void main(String[] args) throws IOException {
//创建发送端Socket对象(DatagramSocket)
DatagramSocket ds = new DatagramSocket();

//自己封装键盘录入数据
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line = br.readLine()) != null) {
//输入的数据886,发送数据结束
if ("886".equals(line)) {
break;
}
//创建数据,并将数据打包
byte[] bys = line.getBytes();
DatagramPacket dp = new DatagramPacket(bys, bys.length, InetAddress.getByName("192.168.169.166"), 12345);

//调用DatagramSocket对象的方法发送数据
ds.send(dp);
}

//关闭发送端
ds.close();
}
}

UDP接收数据:

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

/*
UDP接收数据:
因为接收端不知道发送端什么时候停止发送,故采用死循环接收
*/
public class ReceiveDemo001 {
public static void main(String[] args) throws IOException {
//创建接收端的Socket对象(DatagramSocket)
DatagramSocket ds = new DatagramSocket(12345);

while(true) {
//创建一个数据包,用于接收数据
byte[] bys = new byte[1024];
DatagramPacket dp = new DatagramPacket(bys, bys.length);

//调用DatagramSocket对象的方法接收数据
ds.receive(dp);

//解析数据包,并把数据在控制台显示
System.out.println("数据是:" + new String(dp.getData(), 0, dp.getLength()));
}
}
}

三、运行结果

发送端:

UDP通信程序练习(实现模拟聊天室)_算法

 接收端:

UDP通信程序练习(实现模拟聊天室)_intellij idea_02

 模拟聊天室:开启一个接收端,三个发送端,实现模拟聊天室

UDP通信程序练习(实现模拟聊天室)_后端_03

 

UDP通信程序练习(实现模拟聊天室)_算法_04

 

UDP通信程序练习(实现模拟聊天室)_java_05

 

UDP通信程序练习(实现模拟聊天室)_算法_06

举报

相关推荐

0 条评论