gpt4 book ai didi

network-programming - UDP sendto() 何时阻塞?

转载 作者:行者123 更新时间:2023-12-03 10:42:13 31 4
gpt4 key购买 nike

在 UDP 套接字上使用默认(阻塞)行为时,在这种情况下,对 sendto() 的调用会阻塞吗?我基本上对 Linux 行为感兴趣。

对于 TCP,我知道如果发送窗口已满,拥塞控制会使 send() 调用阻塞,但是 UDP 呢?它有时甚至会阻塞还是只是让数据包在较低层被丢弃?

最佳答案

如果您填满了套接字缓冲区,则可能会发生这种情况,但它高度依赖于操作系统。由于 UDP 不提供任何保证,当您的套接字缓冲区已满时,您的操作系统可以决定做任何事情:阻塞或丢弃。您可以尝试增加 SO_SNDBUF 来临时缓解。

这甚至可能取决于系统的微调,例如它还可能取决于网络接口(interface)驱动程序中 TX 环的大小。 iperf mailing list 中有一些关于此的讨论。 ,但您确实想与您的操作系统的开发人员讨论这个问题。特别注意 O_NONBLOCK 和 EAGAIN/EWOULDBLOCK。

关于network-programming - UDP sendto() 何时阻塞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4165174/

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