首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi socket 有关问题

2013-09-28 
delphi socket 问题本帖最后由 czx33859066 于 2013-09-05 14:43:31 编辑DELPHI做多层开发的调用Scktsrvr.

delphi socket 问题
本帖最后由 czx33859066 于 2013-09-05 14:43:31 编辑 DELPHI做多层开发的调用Scktsrvr.exe这个程序,客户端登录时,
Scktsrvr.exe这个程序里面的列表就会多一个,客户端断开后,Scktsrvr.exe里面的也对应消失了。
现在有个棘手的问题,就是客户端没有断开,但是客户端的IP改了,重新登录的话,Scktsrvr.exe就变成了两个,客户端断开了,原先的IP没有消失,这个问题有什么解决方案吗?
[解决办法]
客户端与服务端进行心跳包,如果超时,则服务端主动断开即可。
[解决办法]
一个时钟事件,定时向服务端发送心跳脉搏, 一般1byte足够。当然,发送的不是1byte怎么简单, 包会自动包含ip, 端口,peer.
服务端也基本在规定的时间内处理一次, 当然是循环的处理。处理所记录的客户端的ip是否还活着。如果已经断气,就清除连接,清除缓冲,清除你的记录表。当然你要明白,客户端连接过来,服务端是明白哪个ip中的哪个peer发过来的。

原理在这里了, 能否理解看你自己的水平了。
[解决办法]
记录心跳时间,当该IP无心跳,剔除。

热点排行