关于Indy多线程(50分)

  • 主题发起人 主题发起人 liky
  • 开始时间 开始时间
L

liky

Unregistered / Unconfirmed
GUEST, unregistred user!
使用Indy9的IdTcpClient的线程Block方式编程,建立连接和收数使用不同的线程,
在程序正常退出后,使用Netstat -a 查看,发现连接端口仍然存在,状态为Time Wait;
使用调试工具,发现线程已经被释放,也没有内存泄露。若使用“查找计算机”,用
Netstat -a 命令,也会发现此问题。这到底是系统的问题还是程序/控件的问题?
 
我想应该是indy的问题,因为他是阻塞的,你的线程里是不是用了idtcpclient1.readbuffer(s,123)之类的。然后没有timeout ?
 
我在Readbuffer时使用了Try,当系统退出时,会捕获到EIDNotConnecded异常,
并且,我通过调试工具,发现线程已全部都释放.用Netstat查,发现是Time wait,

用win2003的"查找计算机",也有此情况.此外,Windows的很多自带程序也有此
问题

 
TCP/IP连接处于TimeWait状态是正常的,你观察就可以发现,该连接会在一段时间之后自动处于断开,至于这段时间的长短,是由Windows系统自己定义的,缺省好像是2分钟。
 
为什么会出现这种状态?
好象使用线程阻塞式的连接方式,都会出现这种状态!
 
很长时间了,还是结了吧!
 
后退
顶部