读书人

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

发布时间: 2012-08-14 10:39:57 作者: rapoo

突然想到一个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

读书人网 >VC/MFC

热点推荐