我在尝试使用Java应用程序接收5字节UDP数据包时遇到了一个非常烦人的问题。
首先,这是我的代码:
DatagramSocket socketD = new DatagramSocket(7502);
byte[] bufRec = new byte[5];
DatagramPacket RXpacket = new DatagramPacket(bufRec, bufRec.length);
socketD.receive(RXpacket);
这是接收部分,发送部分工作正常。
我的问题是,只有在DatagramSocket.reiceve方法之后连接到网络时,此代码才有效,否则代码将永久停留在此方法“等待数据包”(或者直到超时到期)。我找到的其他“解决方法”是调用receive方法,然后断开连接并重新连接网络。它也可以,一次应用程序开始接收数据包。
我严重怀疑Java应用程序存在问题,因为使用Wireshark转储我的网络我可以看到数据包到达,但接收方法仍然卡住了。
我所做的其他测试是将这些数据包作为广播在我的网络中发送,但问题仍然存在(也在接收代码中进行更改)。
任何人,请知道这里发生了什么?
提前致谢, Rodrigo Wantuk。