java网络编程day03
UDP编程
- 没有明确的服务器端和客户端,眼变成数据的发送端和接受端
- 数据接受和发送是通过DatagramPacket对象(包含数据ip和端口)完成的
- 将数据封装成DaragramPacket对象传输(装包/拆包)
- 可以指定在哪个端口接受数据
完成功能:B给A发送今晚吃火锅吗?A回好的!
操作步骤:
- 创建一个DatagramSocket对象,在xxxx端口接受数据
- 构建一个DatagramPacket对象,作为数据传输对象
- 调用socket.receive(packet)和socket.send(packet)方法,将数据传到DatagramPacket对象packer中,或者将数据接收到packet中
- 可以用过packet.getData(),packet.getLength()方法将数据包拆包
public class UDPReceiverA { public static void main(String[] args) throws IOException { //创建一个DatagramSocket对象,在9999端口接受数据 DatagramSocket socket = new DatagramSocket(9999); //构建一个DatagramPacket对象 //在前面讲UDP协议时将过,UDP协议数据传输每个数据包最大64k byte[] buf = new byte[64]; DatagramPacket packet = new DatagramPacket(buf, buf.length); //调用方法,将通过网络传输的Datagrampacket对象填充到packet对象中 //当有数据包发送到9999端口是就会接受到数据到packet中,如果没有数据,就会等待阻塞在这,一直等 System.out.println("等待接受数据"); socket.receive(packet); System.out.println("已接收到数据"); //可以吧packet进行拆包,取出数据,并显示 int length = packet.getLength();//实际接收到的长度 byte[] data = packet.getData();//接受到的数据 System.out.println("接收到的内容为:——————————————————》" + new String(data, 0, length)); byte[] d = "好的`````".getBytes(); DatagramPacket packet1 = new DatagramPacket(d, 0, d.length, InetAddress.getLocalHost(), 9998); socket.send(packet1); System.out.println("A端退出"); } } public class UDPSenderB { public static void main(String[] args) throws IOException { //创建DatagramSocket对象,准备在9998端口,接受数据 DatagramSocket socket = new DatagramSocket(9998); //将需要接受的数据封装到DatagramPacket对象中 byte[] data = "hello world".getBytes(); //对方主机ip,数据数组,数组长度 DatagramPacket packet = new DatagramPacket(data, data.length,InetAddress.getLocalHost(), 9999); socket.send(packet); //下面开始接受数据 socket.receive(packet); int length = packet.getLength(); byte[] data1 = packet.getData(); System.out.println(new String(data1, 0, length)); socket.close(); System.out.println("B端退出"); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】