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

上传过程中TIdFTP客户端断电或拔网线,TIdFTPServer怎么获知这一事件及关闭对应连接

2012-02-25 
上传过程中TIdFTP客户端断电或拔网线,TIdFTPServer如何获知这一事件及关闭对应连接?上传过程中TIdFTP客户

上传过程中TIdFTP客户端断电或拔网线,TIdFTPServer如何获知这一事件及关闭对应连接?
上传过程中TIdFTP客户端断电或拔网线,TIdFTPServer如何获知这一事件及关闭对应连接?

[解决办法]
会有OnException或OnDisconnect事件发生。
[解决办法]
连接活动周期管理。

每一个连接,一方面是指令,另一方面是传输。建立后,设置一变量,记录当前活动时间。

接受每一次指令,均更新活动时间,在文件传输过程中的 OnWork 函数中也来更新这个值。

超过这个时间了,就当成是无效连接。

注意:TIdTCPServer 控件的每一个连接的 Connection-> OnWork 事件函数应当事先编写好,并在程序中动态设置,他无法在设计时设置。
[解决办法]
应该是加个带生命周期的连接判断
[解决办法]
这个可以自己判断
比如到时间发一次链接空数据
超时多少就返回
并close链接
[解决办法]
这个Indy之所以不做 我猜测是好让用户自己更好的控制
再说
这个东西应该是由用户来设计的

有的用户可呢能不需要呢

[解决办法]
客户端断线了与客户端连接后什么也不做,对于 TIdTCPServer 来说,是一样的。

[解决办法]
做这个事本来就不应该由indy来做, 如果有用户连上FTP后很长时间不操作应该做什么操作应该由编写这个FTP服务器的人来确定.


[解决办法]
就象WEB服务器一样,所有的服务器,只是响应请求,而不能管理客户端。

只有在客户端提出请求后,服务器才能根据请求来做应该怎么回应。

在客户端在是连接后,没有任何请求,其实可能连接的,可能是死了。

除非象 QQ 一样,每秒发送一个“我在线”,收不到“我在线”就当他断开。

[解决办法]
设置Tidpeerthread的connection的onwork属性. 有事件时把gettickcount()赋值给data属性.

每隔一段时间检查所有线程(Threads属性), 发现gettickcount()-data里的数值> 你定义的timeout值时关闭线程

热点排行