为什么当 UDP 无连接时 UDP 发送需要超时



所以我看到提供了一些方法来指定通过UDP数据包发送数据时的超时值(至少在C#中看到了这一点)。我想知道它有什么用,因为我认为 UDP 是一种无连接协议,发送方套接字所要做的就是发送数据包,而不必担心数据包是否实际被接收。接收超时是有意义的,但我不确定为什么需要在发送时超时。有人可以解释一下吗?

这就引出了另一个问题,UDP发送阻塞了吗?(我会说不会)。如果是,它会被"阻止"在哪些事情上?

提前谢谢。

这两个问题的答案相同。 send()只是将数据报复制到套接字发送缓冲区,然后由操作系统在后台发送到网络。如果缓冲区已满,则会阻塞。对于 UDP,如果发送数据报的速度快于操作系统将其写入网络的速度,则缓冲区可能会填满。

套接字可以是阻塞(默认)或非阻塞,无论它们是 TCP 还是 UDP。

最新更新