我有一个使用 idHttpServer 开发的网络服务器应用程序。当客户端连接我的网络服务器时,由于某种未知原因,断开连接(不是正常断开连接),我的网络服务器没有收到通知。我知道这是正常行为,但我需要知道客户何时死亡。
有几种方法可以做到这一点。我知道两个好方法:
1 - 实施心跳机制。客户端套接字通知服务器它还活着(需要一些工作和一些代码才能使其工作)
2 - TCP 保持活跃。这是我最喜欢的方式,因为它不需要太多的代码和工作。但我有几个关于这个的问题。
- 这可以与 idHttpServer (用于服务器)和 wininet 功能(用于客户端)一起使用吗?
- 这真的按预期工作吗?我的意思是,当客户端总是死机时,服务器会收到通知?
- 有没有人有一个在wininet上设置的样本?(我想这必须在客户端设置,对吧?)
- 有没有更好的方法来通知服务器客户端已死(当然使用 indy 和 wininet)
编辑
我正在使用 Delphi 2010 和他们 svn 中的最后一个 Indy10 源代码。