DatagramSocket 上的 DataInputStream

DataInputStream over DatagramSocket

我编写了一个通用程序,可以从 DataInputStream 接收数据。但最近我试图使用 DatagramSocket 从 UDP 接收数据。我搜索了很多,但我也找不到一种方法来处理从 DatagramSocket 到 DataInputStream 的传入数据。从逻辑上讲,既然都是传入数据,应该有办法整合这两个对象吧?我错了吗?

得到EJP的答复后,我现在就这样使用对吗?

byte[] buffer = new byte[2048];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
DataInputStream dis = new DataInputStream(new ByteArrayInputStream(packet.getData(), packet.getOffset(), packet.getLength()));
While(true){
    dsocket.receive(packet);
    dis = new DataInputStream(new ByteArrayInputStream(packet.getData(), packet.getOffset(), packet.getLength()));
    reader = new MAVLinkReader(dis,MAVLinkMessage.MAVPROT_PACKET_START_V10);
    mesg = reader.getNextMessage();
    while (mesg != null) {...do stuff...}
}

现在我的感觉是,由于每次 dis 中先前剩余的字节消失时,reader 都会被初始化为新的 dis。

简单。

DataInputStream din = new DataInputStream(new ByteArrayInputStream(packet.getData(), packet.getOffset(), packet.getLength());

其中 packetDatagramPacket