java网络编程day03

UDP编程

  1. 没有明确的服务器端和客户端,眼变成数据的发送端和接受端
  2. 数据接受和发送是通过DatagramPacket对象(包含数据ip和端口)完成的
  3. 将数据封装成DaragramPacket对象传输(装包/拆包)
  4. 可以指定在哪个端口接受数据

完成功能:B给A发送今晚吃火锅吗?A回好的!

操作步骤:

  1. 创建一个DatagramSocket对象,在xxxx端口接受数据
  2. 构建一个DatagramPacket对象,作为数据传输对象
  3. 调用socket.receive(packet)和socket.send(packet)方法,将数据传到DatagramPacket对象packer中,或者将数据接收到packet中
  4. 可以用过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端退出");
}
}
posted @   ふじさんのゆき  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示