请不吝赐教:DELPHI如何保证TCP连接的双向终止?谢谢!(200分)

  • 主题发起人 主题发起人 o19314
  • 开始时间 开始时间
O

o19314

Unregistered / Unconfirmed
GUEST, unregistred user!
ClientSocket 的Close过程和free过程都是非阻塞型的,没有返回值,也就是说我们
调用了这两个过程后不能保证TCP连接的双向终止。在TCP终止过程,如果发生FIN或ACK
丢失的话,程序是没有办法知道的,我们的关闭动作也就不能正确完成了
我做了一个实验,在执行ClientSocket.Close时拔掉网线,现象是:程序照样可以运
行,且ClientSocket的ACTIVE确实变成了FALSE,但对端却一直保持这这个连接。
请问:我的上述理解是否正确?如何解决这个问题?有没有办法保证TCP连接的双向终
止?
 
主要是因为TCP处于TIME-WAIT状态,可以设置(SetSockOpt)Socket的 SO_LINGER 和 SO_DONTLINGER 选项来解决
参见:http://delphibbs.sumaster.com/delphibbs/dispq.asp?lid=1506217
 
接受答案了.
 
后退
顶部