我每秒接收大约3000个UDP数据包,每个数据包的大小约为200字节。我编写了一个Java应用程序来监听这些UDP数据包,并将数据写入文件。然后服务器以预先指定的速率发送15000条消息。将数据写入文件后,其中仅包含大约3500条消息。使用Wireshark我确认了我的网络接口已经接收到了所有15000条消息。之后我尝试更改套接字的缓冲区大小(最初为8496字节):
(java.net.MulticastSocket)socket.setReceiveBufferSize(32*1024);
那个改变使得保存的信息数量增加到了大约8000个。我一直将缓冲区大小增加到1MB,之后,保存的信息数量达到了大约14400个。增加缓冲区大小到更大的值不会增加保存的信息数量。我认为我已经达到了所允许的最大缓冲区大小。但是,我仍然需要捕获由我的网络接口收到的所有15000条信息。
非常感谢您的帮助。