Tserversocket如何检测或者判断客户的非法中断

lxlzq 2004-06-28 02:15:59
用Tserversocket采用非阻塞方式于客户电脑连接进行会话
Tserversocket采用多线程发送信息
当客户端正常端开时,TSERVERSOCKET能在ONCLIENTDISCONNECT中处理
但当客户端非法终止,比如死机、掉网等,Tserversocket就无法获得这个消息了

请问该如何处理才能判断或检测到客户已经端开
我用
var x:integer;
begin
for x:=0 to serversocket3.Socket.ActiveConnections-1 do
begin
if serversocket3.Socket.Connections[x].Connected then
memo1.Lines.Add('检查:'+inttostr(serversocket3.Socket.Connections[x].Remoteport)+'在')
else
memo1.Lines.Add('检查:'+inttostr(serversocket3.Socket.Connections[x].Remoteport)+'不在')
end;
label9.Caption:=inttostr(serversocket3.Socket.ActiveConnections);
end;

运行结果:全是“在”
...全文
151 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
heat 2004-08-12
  • 打赏
  • 举报
回复
用超时概念
insert2003 2004-08-12
  • 打赏
  • 举报
回复
采取握手方式嘛

用一Trimer
额户端定时发一信号到服务端

如果服务端在一定时间内没收到,则表示断开


你搜一下以前的贴子,有很多类似的贴子
24782882 2004-08-12
  • 打赏
  • 举报
回复
你发一个信号给客户端,在信号收到后,客户端返回一个信号
24782882 2004-08-12
  • 打赏
  • 举报
回复
你那样做,客户端在异常的时候根没有发结束标止回来,所以serversocket里面还是认为他是连接的
allgood 2004-08-12
  • 打赏
  • 举报
回复
为何不得到它的句柄!
huguguhu 2004-06-30
  • 打赏
  • 举报
回复
我虽然不知道怎么解决。但是我知道你这里是:因为连接上了所以才有x的增值,所以肯定是“在”。
lxlzq 2004-06-30
  • 打赏
  • 举报
回复
????
lxlzq 2004-06-29
  • 打赏
  • 举报
回复
有人吗~~~~~~~~~~~~
lxlzq 2004-06-29
  • 打赏
  • 举报
回复
有人知道吗
lxlzq 2004-06-28
  • 打赏
  • 举报
回复
我上面的过程就是这么去做的啊
得到的结果还是“在”
上海老李 2004-06-28
  • 打赏
  • 举报
回复
呵呵,因为非法中断后并没通知你它的CONNECTED=false,所以你只能找到的是在了,你要做个轮询看它在不在,而不是被动的得到它在不在

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧