关于检测非正常下线的问题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上去不起作用 不知道什么原因 请高手指点一下
...全文
137 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
knowledge_Is_Life 2008-04-30
  • 打赏
  • 举报
回复
有点难度哦
手指风 2008-04-05
  • 打赏
  • 举报
回复
心跳这块我也不清楚,也是抄网上的代码,不过我直接用的socket函数,不是用组件做的.客户端没试,下次试试
getit911 2008-04-05
  • 打赏
  • 举报
回复
没看出什么问题,改成
Val.KeepAliveTime:=2000;
Val.KeepAliveInterval:=500;
10秒检测效果能明显些

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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