Java - DatagramSocket仅在网络重置后接收数据包

时间:2014-10-15 14:07:32

标签: java sockets networking udp datagram

我在尝试使用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。

0 个答案:

没有答案