TCP三次握手和keep_alive

tcp/ip协议很久之前看过,现在忘得差不多了,补充一下tcp的三次握手和状态。



当对已经关闭的tcp套接字调用recv时,会返回-1,表示连接已经关闭,这是因为tcp有一个keep_alive的机制,相当于心跳连接,保证连接断开时,或者对方异常关闭时,自己能够马上知道,不会导致在recv上堵塞。

至于udp,因为没有状态,所以不会有keep_alive的机制,也无法第一时间得知对方已经关闭。

如何保证不会堵塞?第一种,比较常见就是配合select或epoll;第二种,使用较新的SO_RCVTIMEO和SO_SNDTIMEO套接字选项。

猜你喜欢

转载自onmyway-1985.iteye.com/blog/2398695