关于检测非正常下线的问题KeepAlive

hackgege 2008-04-04 08:25:40
procedure Tserver.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
type
TCP_KeepAlive = record
OnOff: Cardinal;
KeepAliveTime: Cardinal;
KeepAliveInterval: Cardinal
end;
var
Val: TCP_KeepAlive;
Ret: DWord;
begin
try
Val.OnOff:=1;
Val.KeepAliveTime:=60000;
Val.KeepAliveInterval:=1000;
WSAIoctl(Socket.Handle, IOC_IN or IOC_VENDOR or 4,
@Val, SizeOf(Val), nil, 0, @Ret, nil, nil);
except
end;
end;

上面的代码是我在网上找到的 用于检测非正常下线用的 我在tserversocket上使用正常能检测到 但是在tclientsocket上去不起作用 不知道什么原因 请高手指点一下
...全文
90 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
有点难度哦
回复
手指风 2008-04-05
心跳这块我也不清楚,也是抄网上的代码,不过我直接用的socket函数,不是用组件做的.客户端没试,下次试试
回复
getit911 2008-04-05
没看出什么问题,改成
Val.KeepAliveTime:=2000;
Val.KeepAliveInterval:=500;
10秒检测效果能明显些
回复
相关推荐
发帖
网络通信/分布式开发
创建于2007-08-02

1573

社区成员

Delphi 网络通信/分布式开发
申请成为版主
帖子事件
创建了帖子
2008-04-04 08:25
社区公告
暂无公告