Tekkaman

导航

 

2015年9月30日

摘要: 【SO_KEEPALIVE选项】 对于面向连接的TCP socket,在实际应用中通常都要检测对端是否处于连接中,连接端口分两种情况: 1、连接正常关闭,调用close() shutdown()连接优雅关闭,send与recv立马返回错误,select返回SOCK_ERR; 2、连接的对端异常... 阅读全文
posted @ 2015-09-30 17:32 Tekkaman 阅读(14662) 评论(0) 推荐(0)
 
摘要: 【SO_LINGER】 在默认情况下,当调用close关闭socket的使用,close会立即返回,但是,如果send buffer中还有数据,系统会试着先把send buffer中的数据发送出去,然后close才返回. SO_LINGER选项则是用来修改这种默认操作的.于SO_LINGER相关... 阅读全文
posted @ 2015-09-30 17:16 Tekkaman 阅读(1210) 评论(1) 推荐(0)
 
摘要: 【shutdown和close的区别】 当所有的数据操作结束以后,你可以调用close()函数来释放该socket,从而停止在该socket上的任何数据操作:close(sockfd); 你也可以调用shutdown()函数来关闭该socket。该函数允许你只停止在某个方向上的数据传输,而一个... 阅读全文
posted @ 2015-09-30 17:00 Tekkaman 阅读(550) 评论(0) 推荐(0)
 
摘要: 【TIME_WAIT和CLOSE_WAIT状态区别】 常用的三个状态是:ESTABLISHED 表示正在通信,TIME_WAIT 表示主动关闭,CLOSE_WAIT 表示被动关闭。 TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于... 阅读全文
posted @ 2015-09-30 16:42 Tekkaman 阅读(751) 评论(0) 推荐(0)
 
摘要: 【什么是2MSL】 MSL是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。因为tcp报文(segment)是ip数据报(datagram)的数据部分,具体称谓请参见《数据在网络各层中的称呼... 阅读全文
posted @ 2015-09-30 16:22 Tekkaman 阅读(8535) 评论(0) 推荐(1)