将SO_LINGER与udp套接字一起使用是否有效?
如果是,请您描述一下SOLINGER适用于udp套接字的情况或说明示例吗?
一点背景:
我从未使用过SO_LINGER选项,因此我不熟悉它的用途或何时使用(特别是使用udp套接字)。
此问题的更具体背景:
我问,因为我遇到了一些open source code that was implementing a udp socket and using the SO_LINGER socket option(从我查看代码的30秒看起来它看起来像一个非常标准的udp套接字接收,然后通过gnuradio将数据推送给某种消费者' s API)。
从我在人工页面和网页上对SO_LINGER所做的简短阅读中,所有页面都讨论过SO_LINGER与面向连接的协议(即tcp等)一起使用......但是这段代码正在进行非连接面向协议,udp在这种特定情况下,所以我很困惑为什么SO_LINGER与udp套接字一起使用。
答案 0 :(得分:3)
当使用正读取超时时,它会导致close()
阻塞达到该超时,而套接字发送缓冲区中仍有未发送的数据,并且写入该数据的任何困难都将作为错误返回close()
方法。这同样适用于UDP和TCP。它很少使用。
SO_LINGER的其他用途,零超时,仅适用于TCP。