gpt4 book ai didi

java - DatagramSocket.receive() 问题

转载 作者:行者123 更新时间:2023-12-02 08:34:50 26 4
gpt4 key购买 nike

我使用 Java 中的 DatagramSocket 类从用 C 编写的客户端接收 udp 数据包。以下是接收代码(服务器套接字已设置):

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



try {
serverSocket.receive(recvdPacket);

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

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

最佳答案

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

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

关于java - DatagramSocket.receive() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2218973/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com