Y
ysfy
Unregistered / Unconfirmed
GUEST, unregistred user!
近来在做一个项目,要让客户端长期在线,使用Timer每隔10秒检测在线状态,
procedure TClientFrmMain.Timer1Timer(Sender: TObject);
begin
if Client.Connected then
try
Client.WriteLn('CLIENT ONLINE ');//客户端发信息给服务端,表明自己在线
except
client.Disconnect;
end;
end;
procedure TClientHandleThread.Execute;
begin//客户端接收线程
while not Terminated do
begin
if not ClientFrmMain.Client.Connected then
Terminate
else
try
ClientFrmMain.Client.ReadBuffer(CB, SizeOf (CB));
Synchronize(HandleInput);
except
if not Terminated then Terminate;
if Assigned(ClientFrmMain.Client) then
ClientFrmMain.Client.Disconnect;
end;
end;
end;
遇线路不稳定时问题就出来了,情况分两种:1、客户端断线。2、服务端断线。
如果出现第一种情况时Client能自动断开;如果出现第二种情况时却无法抛出异常,Client不能自动断开,也就是说:Client.WriteLn('CLIENT ONLINE ') 能正常运行!有什么办法能让Client自动断开?
procedure TClientFrmMain.Timer1Timer(Sender: TObject);
begin
if Client.Connected then
try
Client.WriteLn('CLIENT ONLINE ');//客户端发信息给服务端,表明自己在线
except
client.Disconnect;
end;
end;
procedure TClientHandleThread.Execute;
begin//客户端接收线程
while not Terminated do
begin
if not ClientFrmMain.Client.Connected then
Terminate
else
try
ClientFrmMain.Client.ReadBuffer(CB, SizeOf (CB));
Synchronize(HandleInput);
except
if not Terminated then Terminate;
if Assigned(ClientFrmMain.Client) then
ClientFrmMain.Client.Disconnect;
end;
end;
end;
遇线路不稳定时问题就出来了,情况分两种:1、客户端断线。2、服务端断线。
如果出现第一种情况时Client能自动断开;如果出现第二种情况时却无法抛出异常,Client不能自动断开,也就是说:Client.WriteLn('CLIENT ONLINE ') 能正常运行!有什么办法能让Client自动断开?