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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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 让容器管理更轻松!