臭小子帅 2023-12-14 14:19 采纳率: 42.9%
浏览 7
已结题

UDP接收数据报文,如何获取里面的数据

UDP接收数据报文,数据帧格式如下图,怎么通过Java代码获取具体的值?
目前拿到了的数据格式byte[]

img

  • 写回答

1条回答 默认 最新

  • Oo1101oO 2023-12-14 14:23
    关注
    
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    
    public class UdpReceiver {
        public static void main(String[] args) throws Exception {
            // 创建DatagramSocket对象
            DatagramSocket socket = new DatagramSocket(9876); // 端口号可以根据需要进行更改
    
            // 创建DatagramPacket对象,用于接收数据
            byte[] buffer = new byte[1024];
            DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
    
            // 接收数据报文
            System.out.println("等待接收数据...");
            socket.receive(packet);
            System.out.println("收到数据报文: " + packet.getLength()); // 获取数据报文长度
            byte[] data = packet.getData(); // 获取数据部分
            System.out.println("数据部分: " + new String(data)); // 将数据部分转换为字符串并打印
    
            // 获取报头信息
            byte[] header = packet.getHeader(); // 获取报头部分
            System.out.println("报头部分: " + new String(header)); // 将报头部分转换为字符串并打印
    
            // 关闭socket连接
            socket.close();
        }
    }
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月23日
  • 创建了问题 12月14日