如果用connected 属性判断,只能判断用程序关掉连接的情况,如果网络故障断开则无法检测,能够给我例子
解决方案 »
- jpeg error #53 这是什么意思啊 谢谢了
- 如何取得一个SQL Server实例中有多少个数据库,每个数据库的名称是什么?
- WebBrowser1自动电击按扭疑问
- 各位高手让软件自动适应 800 X 600 和 1024 X 768 应该怎么做?谢谢大家
- 问:如何写一个延时程序,望有代码!在线等,急!
- FaseReport中Memo框中如果我写了代码,用公式计算了它的值,使得memo值为数值类型,为什么就不能自定义它的格式了呢,比如说我要定义两位
- 求助Delphi资源文件
- 有关多线程的问题
- 数据交换问题 急..............
- 怎样用消息模拟Ctrl键的输入?多谢!
- 如何用delphi 编写获取路由器的 动态ip地址
- 高手請解答_系統函數"::fn_listextendedproperty"在TAdoQuery裡如何執行?
//检查客户端是否掉线
procedure TF_Main.Timer1Timer(Sender: TObject);
var
hour, min, sec, msec: word;
i: integer;
socket: TCustomWinSocket;
tmResultMin, tmResultSec: word;
CheakTime, ReceiveTime: word;
begin
CheakTime := 40; //固定检查时间
ReceiveTime := 20; //信息反馈时间
i := 0;
while i <= TimeList.Count - 1 do
begin
DecodeTime(now, hour, min, sec, msec);
if min < ptimerecord(TimeList.Items[i]).min then
inc(min, 60);
tmResultMin := min - ptimerecord(TimeList.Items[i]).min; tmResultSec := tmResultMin * 60 + (sec - ptimerecord(TimeList.Items[i]).sec); //如果客户限定反馈时间内没有反馈,则删除该用户
if tmResultSec >= CheakTime + ReceiveTime then
begin
socket :=TCustomWinSocket.Create(ptimerecord(TimeList.Items[i]).socketHand);
ServerSocket1.OnClientDisconnect(nil, socket);
socket.Free;
end
else if tmResultSec >= CheakTime then
//如果客户检查时间内没有动作则发信息要求客户反馈
begin
socket := TCustomWinSocket.Create(ptimerecord(TimeList.Items[i]).socketHand);
socket.SendText(BuildProtocol('Z000'));
end;
inc(i);
end;
end;