JavaSE-21.2.2【案例-UDP通信程序(“多人聊天室”)】

复制代码
 1 package day12.lesson2.p1;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.FileReader;
 5 import java.io.IOException;
 6 import java.io.InputStreamReader;
 7 import java.net.DatagramPacket;
 8 import java.net.DatagramSocket;
 9 import java.net.InetAddress;
10 import java.net.SocketException;
11 
12 /*
13 2.3 案例-UDP通信程序
14 
15     UDP发送数据:数据来自于键盘录入,直到输入的数据是886,发送数据结束
16     UDP接收数据:因为接收端不知道发送端什么时候停止发送,故采用死循环接收
17 
18  */
19 public class SendDemo {
20     public static void main(String[] args) throws IOException {
21         DatagramSocket ds = new DatagramSocket();
22 
23         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
24         String line;
25         while ((line=br.readLine()) != null){
26             if("886".equals(line)){
27                 break;
28             }
29 
30             byte[] bytes = line.getBytes();
31             DatagramPacket dp = new DatagramPacket(
32                     bytes,
33                     bytes.length,
34                     InetAddress.getByName("MSI-YUBABY"),
35                     12345
36             );
37 
38             ds.send(dp);
39         }
40 
41         ds.close();
42     }
43 }
复制代码
复制代码
 1 package day12.lesson2.p1;
 2 
 3 import java.io.IOException;
 4 import java.net.DatagramPacket;
 5 import java.net.DatagramSocket;
 6 
 7 public class ReceiveDemo {
 8     public static void main(String[] args) throws IOException {
 9         DatagramSocket ds = new DatagramSocket(12345);
10 
11         while (true){
12             byte[] bytes = new byte[1024];
13             DatagramPacket dp = new DatagramPacket(bytes, bytes.length);
14 
15             ds.receive(dp);
16 
17             System.out.println("接收到的数据:" + new String(
18                     dp.getData(),
19                     0,
20                     dp.getLength()
21             ));
22         }
23 
24 //        ds.close();
25         //启动一个ReceiveDemo-main,启动多个SendDemo-main,即可组成“聊天室”
26     }
27 }
复制代码

 

posted @   yub4by  阅读(61)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示