tcp/ip协议很久之前看过,现在忘得差不多了,补充一下tcp的三次握手和状态。
当对已经关闭的tcp套接字调用recv时,会返回-1,表示连接已经关闭,这是因为tcp有一个keep_alive的机制,相当于心跳连接,保证连接断开时,或者对方异常关闭时,自己能够马上知道,不会导致在recv上堵塞。
至于udp,因为没有状态,所以不会有keep_alive的机制,也无法第一时间得知对方已经关闭。
如何保证不会堵塞?第一种,比较常见就是配合select或epoll;第二种,使用较新的SO_RCVTIMEO和SO_SNDTIMEO套接字选项。
TCP三次握手和keep_alive
猜你喜欢
转载自onmyway-1985.iteye.com/blog/2398695
今日推荐
周排行