首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

突然想到一个tcp四次挥手的有关问题

2012-08-14 
突然想到一个tcp四次挥手的问题。client先调用shutdown(s, SD_SEND),进入FIN_WAIT_2。然后server收到了clien

突然想到一个tcp四次挥手的问题。
client先调用shutdown(s, SD_SEND),进入FIN_WAIT_2。然后server收到了client的FIN,进入CLOSE_WAIT,当server把最后的应用数据发送出去之后,也调用shutdown(s, SD_SEND)告诉client己方也已发送完毕, 然后server调用closesocket,client在收到server最后发送的应用层数据已经FIN之后,调用closesoclet。

我想到的问题是,如果server在发送最后的数据以及FIN包的时候,网络环境突然变得很差,导致这些数据一致没发送过去。
那么client的会一直保持在FIN_WAIT2状态。 那么server在调用shutdown(s, SD_SEND)之后立即调用closesocket会不会有问题呢? 这种情况下server在应用层有机会知道自己的FIN一定被client收到了么?

[解决办法]
http://blog.csdn.net/collin1211/article/details/4938705

热点排行