首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

高性能网络编程4–TCP连接的关闭

4、so_linger这个功能的用处在哪? 5、对于监听socket执行关闭,和对处于ESTABLISH这种通讯的socket执行关闭,有何区别?...2)关闭普通ESTABLISH状态的连接(未设置so_linger) 首先检查是否有接收到却未处理的消息。...3)使用了so_linger的连接 首先要澄清,为何要有so_linger这个功能?因为我们可能有强可靠性的需求,也就是说,必须确保发出的消息、FIN都被对方收到。...注意,务必慎用so_linger,它会在不经意间降低你程序中代码的执行速度(close的阻塞)。 所以,当这个进程设置了so_linger后,前半段依然没变化。...这里需要注意,so_linger不是确保连接被四次握手关闭再使close返回,而只是保证我方发出的消息都已被对方收到。

1.7K50

高性能网络编程4--TCP连接的关闭

4、so_linger这个功能的用处在哪? 5、对于监听socket执行关闭,和对处于ESTABLISH这种通讯的socket执行关闭,有何区别?...2)关闭普通ESTABLISH状态的连接(未设置so_linger) 首先检查是否有接收到却未处理的消息。...3)使用了so_linger的连接 首先要澄清,为何要有so_linger这个功能?因为我们可能有强可靠性的需求,也就是说,必须确保发出的消息、FIN都被对方收到。...注意,务必慎用so_linger,它会在不经意间降低你程序中代码的执行速度(close的阻塞)。 所以,当这个进程设置了so_linger后,前半段依然没变化。...这里需要注意,so_linger不是确保连接被四次握手关闭再使close返回,而只是保证我方发出的消息都已被对方收到。

1.2K20

网络编程Socket之TCP之closeshutdown具体解释(续)

到套接字接收缓冲区,下一个FIN分节也被添�到套接字接收缓冲区,然后等待处理,如果正好此时server应用进程崩溃掉,那么这些数据就丢失掉了,server并没有真正收到,而client也永远不会知道; 2.设置SO_LINGER...套接字选项且l_linger为正值时的close 说明:这样的情况下客户的close要到它的数据和FIN已经被server的TCP确认以后才会返回; 问题:同上问题2 3.设置SO_LINGER套接字选项且...l_linger为偏小正值时的close 说明:在服务端的确认到达之前,SO_LINGER套接字选项设置的延滞时间到,close将会返回EWOULDBLOCK错误,且套接字发送缓冲区中的不论什么残留数据被丢弃...问题:同问题2 总结:设置SO_LINGER套接字选项以后,close的成功返回仅仅是告诉我们先前发送的数据的FIN已经由对端TCP确认,而不能告诉我们对端应用进程是否已经读取数据,假设不设置该套接字选项

57730

setsockopt与getsockopt

level指定控制套接字的层次.可以取三种值: 1)SOL_SOCKET:通用套接字选项. 2)IPPROTO_IP:IP选项. 3)IPPROTO_TCP:TCP选项 以linux 2.6内核为例(在不同的平台上...Linux通过这一值来排列网络队列。 这个值在0到6之间(包括0和6),由option_value指定。赋给sock->sk->sk_priority。...SO_LINGER,如果选择此选项, close或 shutdown将等到所有套接字里排队的消息成功发送或到达延迟时间后>才会返回. 否则, 调用将立即返回。...在Linux中,缓冲区内的最小字节数是固定的,为1。即将sock->sk->sk_rcvlowat固定赋值为1。 SO_RCVTIMEO,设置接收超时时间。...// 如果m_sLinger.l_onoff=0;则功能和2.)作用相同; m_sLinger.l_linger=5;//(容许逗留的时间为5秒) setsockopt (s,SOL_SOCKET,SO_LINGER

1.1K30

三次握手和四次挥手详细介绍

检测SYN攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击.在Linux下可以如下命令检测是否被Syn攻击 netstat -n -p...而在linux上则不存在这个问题。(我的实验平台:winxp, ubuntu7.10) 要解决windows平台的这个问题,可以设置SO_LINGER选项。...SO_LINGER选项决定调用close时TCP的行为。...通过以上方式设置SO_LINGER状态,等同于设置SO_DONTLINGER状态。...断开连接时的意外: 这个算不上断开连接时的意外,当TCP连接发生一些物理上的意外情况时,例如网线断开,linux上的TCP实现会依然认为该连接有效,而windows则会在一定时间后返回错误信息。

97530
领券