0

我正在使用DatagramSocketJava 中的类从用 C 编写的客户端接收 udp 数据包。这是接收的代码(服务器套接字已经设置):

byte[] inputByte = new byte[1];
        DatagramPacket recvdPacket = new DatagramPacket(inputByte, inputByte.length);



        try {
            serverSocket.receive(recvdPacket);

然后它打印内容。我的调试消息(未在此代码中显示)表明它已成功到达receive()部件并正在等待(这是一个阻塞调用)。这是问题所在:

此服务器仅在第二次运行发送消息的客户端时接收数据包,而不是第一次。即使客户端在第一次运行时发送了多个数据包,服务器也不会显示任何内容,直到第二次运行整个客户端。假设问题出在服务器端而不是客户端是否安全?(客户端代码不是我写的......这很恶心,而且是用C语言编写的)。

4

1 回答 1

2

我会尽力给出最好的答案,但是只有 3 行代码可以查看,您可能正在做一些我看不到的坏事。您可以发布更多相关代码吗?

在我看来,问题可能出在客户端。还有一种可能是您的网络正在对 UDP 流量做一些奇怪的事情(我遇到过其中一些)。如果您想隔离哪一方有问题,我建议通过客户端的两次运行在服务器机器上运行wireshark ,然后查看服务器机器正在接收什么样的数据包。确保在客户端的连续运行之间留出几秒钟的时间,然后过滤有问题的 UDP 端口。如果在客户端第一次运行时没有数据包到达服务器,那么您的问题可能出在客户端的某个地方。

于 2010-02-08T05:16:45.050 回答