gpt4 book ai didi

java - 操作系统是否为 UDP 缓冲数据包

转载 作者:行者123 更新时间:2023-11-29 05:51:52 25 4
gpt4 key购买 nike

对于单线程服务器,我有下面的代码。我想知道,如果我收到一个数据包(并开始处理它)并且另一个数据包到达,而我没有收听(忙于处理)会发生什么。操作系统会缓冲数据包并等待套接字再次监听,还是数据包被丢弃?

            While(true){
UDPsocket.receive(packetBuff);
//Do stuff
}

注意:应用运行在Linux(Ubuntu 12.04)

最佳答案

操作系统有一个接收缓冲区,当您的程序繁忙时,它可以在其中存储数据。您可以使用带有 SO_RCVBUF 选项的 getsockopt() 来查看/更改接收缓冲区大小,以及 SO_SNDBUF 用于发送缓冲区。通常有一个系统范围的默认值,以及您可以为此设置的系统范围的最大大小。

默认值是什么,以及如何查看取决于您使用的操作系统。默认值通常介于 32K 和 256K 之间,它将为您缓冲数据。

关于java - 操作系统是否为 UDP 缓冲数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13577510/

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