【问题标题】:Is it valid to use SO_LINGER with a udp socket?将 SO_LINGER 与 udp 套接字一起使用是否有效?
【发布时间】:2016-01-03 22:10:47
【问题描述】:

将 SO_LINGER 与 udp 套接字一起使用是否有效?

如果是,请描述 SO_LINGER 适用于 udp 套接字的情况或示例?


一点背景:

我从未使用过 SO_LINGER 选项,因此我不熟悉它的作用或何时适合使用(尤其是使用 udp 套接字)。

这个问题的更具体的上下文:

我问是因为我遇到了一些 open source code that was implementing a udp socket and using the SO_LINGER socket option(从我 30 秒的代码来看,它看起来像是一个非常标准的 udp 套接字接收然后通过 gnuradio 的 API 将数据推送给某种消费者)。

从我在手册页和网页上对 SO_LINGER 所做的简短阅读中,所有页面都谈到了 SO_LINGER 与面向连接的协议(即 tcp 等)一起使用......但是这段代码正在执行非连接面向协议,在这种特定情况下是 udp,所以我很困惑为什么 SO_LINGER 与 udp 套接字一起使用。

【问题讨论】:

    标签: sockets networking udp gnuradio


    【解决方案1】:

    当与正读超时一起使用时,它会导致close() 阻塞直到该超时,而套接字发送缓冲区中仍有未发送的数据,并且写入该数据的任何困难都将作为来自@ 的错误返回987654322@ 方法。这同样适用于 UDP 和 TCP。它很少使用。

    SO_LINGER 的另一种用法,超时为零,仅适用于 TCP。

    【讨论】:

      猜你喜欢
      • 2015-11-28
      • 2015-03-14
      • 2016-04-01
      • 1970-01-01
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 2011-02-19
      • 2016-07-06
      相关资源
      最近更新 更多