我在Java中使用DatagramSocket类从用C编写的客户端接收udp数据包。下面是接收的代码(服务器套接字已经设置):
byte[] inputByte = new byte[1];
DatagramPacket recvdPacket = new DatagramPacket(inputByte, inputByte.length);
try {
serverSocket.receive(recvdPacket);然后打印内容。我的调试消息(在这段代码中没有显示)表明它成功地到达了receive()部件,并且正在等待(这是一个阻塞调用)。以下是问题所在:
此服务器只在第二次运行发送消息的客户端时接收数据包,而不是第一次。即使客户端在第一次运行时发送多个数据包,服务器在第二次运行整个客户端之前也不会显示任何内容。假设问题在服务器端而不是客户端是安全的吗?(客户端代码不是我写的.太恶心了,用C语言写)。
发布于 2010-02-08 05:16:45
我会尽我所能给出最好的答案,但是只要看3行代码,你可能做了一些我看不见的坏事。你能再张贴一些相关的代码吗?
在我看来问题可能出在客户身上。您的网络也有可能对UDP流量做了一些奇怪的事情(我遇到了其中的一些)。如果您想隔离出哪一方有问题,我建议通过客户机的两次运行在服务器机器上运行威雷沙克,然后查看服务器机器正在接收什么样的数据包。确保在客户端连续运行之间有几秒钟的时间,然后筛选出有问题的UDP端口。如果在客户端的第一次运行中没有数据包到达服务器,那么您的问题可能在客户端的某个地方。
https://stackoverflow.com/questions/2218973
复制相似问题