现有一TClientSocket控件,与服务器保持一个长连接。
介面上有一个“启动”按钮,“停止”按钮。分别是开启这个与服务器的长连接和关闭该长连接。我在“停止”按钮的事件里是这样关闭长连接的:ClientSocket.close;
当我使用 netstat -na 命令观看系统端口情况时,发现有一个本地断口开者,只是它的状态为 Time_Wait. 当我点好多次“启动”和“停止”按钮后,发现有一堆的本地断口,状态都是Time_Wait.当过去一段时间后,再次查看这些本地断口的状态,发现状态变成了Fin_Wait_2 再过去一段时间后,再次查这些本地断口的状态,发现这些断口已经全部消失,就是已经 被系统关闭了。请教一下用ClientSocket.close方法不能真正关闭本地断口吗?
介面上有一个“启动”按钮,“停止”按钮。分别是开启这个与服务器的长连接和关闭该长连接。我在“停止”按钮的事件里是这样关闭长连接的:ClientSocket.close;
当我使用 netstat -na 命令观看系统端口情况时,发现有一个本地断口开者,只是它的状态为 Time_Wait. 当我点好多次“启动”和“停止”按钮后,发现有一堆的本地断口,状态都是Time_Wait.当过去一段时间后,再次查看这些本地断口的状态,发现状态变成了Fin_Wait_2 再过去一段时间后,再次查这些本地断口的状态,发现这些断口已经全部消失,就是已经 被系统关闭了。请教一下用ClientSocket.close方法不能真正关闭本地断口吗?
解决方案 »
- TDBGrid 问题
- ActiveX 访问 Web Service问题
- 用adoquery查询表的分组,然后分别打印每组数据,fastreport 如何实现?抱歉只有20分
- 免费下载DELPHI书籍,源码的好地方,可能很多人都知道了,这里书很多也很快,
- 表的过滤条件怎么写呀?
- 请问谁有ThemeEngine for delphi7,免费的(不是Trial版的)
- 一表对多表的报表打印问题!!请各位帮帮忙!!!
- 谁有Borland Delphi 6 Personal Edition 的Serial Number 和Authorization key?
- interBase数据库的问题!!!
- 如何用DELPHI 预览WORD,EXECL和PDF文档呢?
- 有谁可以给我一个GetThreadTimes的例子吗?
- 谁知道现在哪里还有卖DELPHI5.x
help!!
在 TIdTCPClient 里面也有这个问题。
有没有什么 解决方法?
急啊,老没人回答
抱歉,我暂时也找不到解决的办法。
看来只有另外分配端口了!
反之,若客户端主动关闭,则客户端相应端口的占用不会被马上释放,相应端口的状态为“TIME_WAIT”。 总不能要求人家服务器端在客户端关闭连接后也关闭一下连接吧。若解决此问题,我另外开帖送分-100 决不食言。
本人有的是分。
这样就能把端口释放了。别忘了给分!
今天试了一下。
我用的是 indy 的 TIdTCPClient
IdTCPClient1.Socket 里面好象没有Disconnect 这一项
Socket.Close 好象也不行
Socket.Destroy 也不行
怎么办呢?
IdTCPClient1.DisConnect;
IdTCPClient1.Free;
没有办法解决了吗?
一个端口断开要等待两倍超时时间的,只是不知道数据传输完了还用不用等。我用TTcpServer 监听端口的时候也有类似的毛病,但是换成TServerSocket 就能立刻断开。
http://expert.csdn.net/Expert/TopicView1.asp?id=2679010你也可以考虑换个控件试试。