我写了一个通用程序,可以接受来自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 中以前剩余的字节消失时,读取器都会初始化为新的 dis。
简单。
DataInputStream din = new DataInputStream(new ByteArrayInputStream(packet.getData(), packet.getOffset(), packet.getLength());
其中packet
是DatagramPacket
.