十五(三)、网络编程之UDP
一、概述:
- UDP(不可靠的传输,但是是最快的方式)
- 系统不保证UDP数据报一定能安全送到目的地,也不能确定什么时候可以抵达;
- DatagramSocket和DatagramPacket实现了基于UDP协议的网络编程;
- DatagramPacket对象封装了UDP数据报;
二、UDP的编程实现
1.创建一个数据包
- 每个数据不能大于64k,
- 每一个都记录数据信息,发送端的IP,端口号以及发送到接收端的IP和端口号
代码实现:
send()为发送端;accept为接收端;
1 import java.io.IOException; 2 import java.net.DatagramPacket; 3 import java.net.DatagramSocket; 4 import java.net.InetAddress; 5 import java.net.SocketException; 6 import java.net.UnknownHostException; 7 8 import org.junit.Test; 9 //关于UDP的编程实现,UDP(不可靠的传输,但是是最快的方式) 10 public class TestUdp { 11 12 @Test 13 public void send() { 14 DatagramSocket ds = null; 15 try { 16 ds = new DatagramSocket(); 17 byte[] b = "我是要发送的数据".getBytes(); 18 //创建一个数据报,每个数据不能大于64k,每一个都记录数据信息,发送端的IP,端口号以及发送到接收端的IP和端口号 19 DatagramPacket pack = new DatagramPacket(b, 0, b.length,InetAddress.getByName("127.0.0.1"),8989); 20 ds.send(pack); 21 ds.close(); 22 } catch (SocketException e) { 23 // TODO Auto-generated catch block 24 e.printStackTrace(); 25 } catch (UnknownHostException e) { 26 // TODO Auto-generated catch block 27 e.printStackTrace(); 28 } catch (IOException e) { 29 // TODO Auto-generated catch block 30 e.printStackTrace(); 31 }finally{ 32 if(ds != null){ 33 ds.close(); 34 } 35 } 36 } 37 38 @Test 39 public void accept(){ 40 DatagramSocket ds=null; 41 try { 42 ds = new DatagramSocket(8989); 43 byte[] b = new byte[1024]; 44 DatagramPacket pack = new DatagramPacket(b, 0, b.length); 45 ds.receive(pack); 46 String str = new String (pack.getData(), 0, pack.getLength()); 47 System.out.println(str); 48 } catch (SocketException e) { 49 // TODO Auto-generated catch block 50 e.printStackTrace(); 51 } catch (IOException e) { 52 // TODO Auto-generated catch block 53 e.printStackTrace(); 54 }finally{ 55 if(ds != null){ 56 ds.close(); 57 } 58 } 59 } 60 }
博客园地址:https://www.cnblogs.com/lixiuming521125/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!