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());
其中 packet
是 DatagramPacket
。
我编写了一个通用程序,可以从 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());
其中 packet
是 DatagramPacket
。