1

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

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

提前致谢。

4

1 回答 1

5

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

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

于 2013-11-01T23:16:06.483 回答