SO_LINGER选项有何作用?
2013-08-26 18:32
169 查看
若设置了SO_LINGER(亦即linger结构中的l_onoff域设为非零,参见2.4,4.1.7和4.1.21各节),并设置了零超时间隔,则closesocket()不被阻塞立即执行,不论是否有排队数据未发送或未被确认。这种关闭方式称为“强制”或“失效”关闭,因为套接口的虚电路立即被复位,且丢失了未发送的数据。在远端的recv()调用将以WSAECONNRESET出错。
若设置了SO_LINGER并确定了非零的超时间隔,则closesocket()调用阻塞进程,直到所剩数据发送完毕或超时。这种关闭称为“优雅的”关闭。请注意如果套接口置为非阻塞且SO_LINGER设为非零超时,则closesocket()调用将以WSAEWOULDBLOCK错误返回。
若在一个流类套接口上设置了SO_DONTLINGER(也就是说将linger结构的l_onoff域设为零;参见2.4,4.1.7,4.1.21节),则closesocket()调用立即返回。但是,如果可能,排队的数据将在套接口关闭前发送。请注意,在这种情况下WINDOWS套接口实现将在一段不确定的时间内保留套接口以及其他资源,这对于想用所以套接口的应用程序来说有一定影响(TIME_WAIT)。
这是网上的解释
主要是影响close socket时的动作
若设置了SO_LINGER并确定了非零的超时间隔,则closesocket()调用阻塞进程,直到所剩数据发送完毕或超时。这种关闭称为“优雅的”关闭。请注意如果套接口置为非阻塞且SO_LINGER设为非零超时,则closesocket()调用将以WSAEWOULDBLOCK错误返回。
若在一个流类套接口上设置了SO_DONTLINGER(也就是说将linger结构的l_onoff域设为零;参见2.4,4.1.7,4.1.21节),则closesocket()调用立即返回。但是,如果可能,排队的数据将在套接口关闭前发送。请注意,在这种情况下WINDOWS套接口实现将在一段不确定的时间内保留套接口以及其他资源,这对于想用所以套接口的应用程序来说有一定影响(TIME_WAIT)。
这是网上的解释
主要是影响close socket时的动作
相关文章推荐
- TCP选项之SO_LINGER的作用与意义
- java网络编程Socket中SO_LINGER选项的用法解读
- tcp 选项:SO_LINGER祥解(转)
- Linux下高性能网络编程中的几个TCP/IP选项_SO_REUSEADDR、SO_RECVBUF、SO_SNDBUF、SO_KEEPALIVE、SO_LINGER、TCP_CORK、TCP_NODE
- Linux网络编程socket选项之SO_LINGER,SO_REUSEADDR
- SO_LINGER 选项 与 shutdown 函数
- TCP协议中的SO_LINGER选项
- TCP选项:SO_LINGER和TCP_DEFER_ACCEPT
- TCP选项之SO_LINGER
- TCP协议中的SO_LINGER选项
- setsockopt 设置 SO_LINGER 选项 关闭连接
- TCP的选项SO_LINGER设置延时关闭
- TCP协议中的SO_LINGER选项
- Linux网络编程socket选项之SO_LINGER,SO_REUSEADDR
- 套接字选项SO_LINGER, SO_KEEPALIVE等
- TCP选项之SO_LINGER
- setsockopt 设置 SO_LINGER 选项
- 套接字选项SO_LINGER
- 读书笔记: SO_LINGER 选项
- 套接字选项 SO_LINGER详解