我每秒接收约 3000 个 UDP 数据包,每个数据包的大小约为 200 字节。我编写了一个 java 应用程序,它监听这些 UDP 数据包并将数据写入文件。然后服务器以先前指定的速率发送 15000 条消息。写入文件后,它仅包含约 3500 条消息。使用wireshark,我确认我的网络接口收到了所有15000条消息。之后我尝试更改套接字的缓冲区大小(最初是 8496 字节):
(java.net.MulticastSocket)socket.setReceiveBufferSize(32*1024);
该更改将保存的消息数量增加到约 8000 条。我不断将缓冲区大小增加到 1MB。之后,保存的消息数量达到了 ~14400。将缓冲区大小增加到更大的值不会增加保存的消息数量。我想我已经达到了允许的最大缓冲区大小。不过,我需要捕获我的网络接口接收到的所有 15000 条消息。
任何帮助,将不胜感激。提前致谢。