[javaSE] 网络编程(UDP通信)
UDP发送端
获取DatagramSocket对象,new出来
获取DatagramPacket对象,new出来,构造参数:byte[]数组,int长度,InetAddress对象,int端口
调用DatagramSocket对象的send()方法,发送出去,参数:DatagramPacket对象
调用DatagramSocket对象的close()方法,关闭资源
import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /** * 发送端 * @author taoshihan * */ public class Sender { public static void main(String[] args) throws Exception { DatagramSocket ds=new DatagramSocket(); byte[] buf="Hello UDP".getBytes(); DatagramPacket p=new DatagramPacket(buf, buf.length, InetAddress.getLocalHost(),10000); ds.send(p); ds.close(); } }
UDP接收端
获取DatagramSocket对象,new出来,构造参数:int端口号
获取DatagramPacket对象,new出来,构造参数:byte[]数组,int长度
调用DatagramSocket对象的receive()方法,接收数据,参数:DatagramPacket对象
调用DatagramPacket对象的getAddress()方法,获取到InetAdress对象
调用DatagramPacket对象的getData()方法,获取到byte[]字节数组,接收的数据
调用DatagramPacket对象的getLength()方法,获取到数据长度
通过new String()包一下,获得String数据,参数:byte[]数组,0开始,length长度
import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /** * 接收端 * @author taoshihan * */ public class Receiver { public static void main(String[] args) throws Exception { DatagramSocket ds=new DatagramSocket(10000); byte[] buf=new byte[1024]; DatagramPacket datagramPacket=new DatagramPacket(buf, buf.length); ds.receive(datagramPacket); InetAddress ip= datagramPacket.getAddress(); int port=datagramPacket.getPort(); byte[] resByte=datagramPacket.getData(); int length=datagramPacket.getLength(); String info=new String(resByte,0,length); System.out.println("来自:"+ip.getHostAddress()+":"+port+"说:"+info); } }
结果:
来自:100.66.217.80:56356说:Hello UDP
先运行接收端,此时程序会阻塞住,等待接收。。。
再运行发送端
接收到一次以后就会断,用while(true) 包一下,死循环但是会阻塞住,注意不要把创建DatagramSocket包进去
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具