如何进行winsock控件 连接状态的检测

okdog 2003-10-19 08:07:38
有服务端和客户端两个WINSOCK连接程序,当client 连接成功server后,我将
server端的网线拔开后,CLIENT并没有异常反映,我甚至在CLIENT执行SENDDATA方法,都没有抱错,只是发不出去而已,反之,我拔开CLIENT的网线,SERVER端也检测不出以和CLIENT断开,请问有好的方法解决这个问题吗?谢谢
...全文
288 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
guanchen 2003-10-22
  • 打赏
  • 举报
回复
up
scegg 2003-10-21
  • 打赏
  • 举报
回复
这种方法的时间间隔可以动态指定,或者由用户决定。
scegg 2003-10-21
  • 打赏
  • 举报
回复
简单解决办法:
A端:
两个Timer,暂命名为TA TB,TA为发送线路测试数据的间隔,比如10秒一次,就写10000;TB为等待回应时间,最大65536毫秒。
TA连接后打开,TB关闭。
TA过程:发送一个数据,比如"Ping"。
TB过程:关闭连接,报告断开。
收到数据时检测如果是"Pong"就TB.Enabled=False再TB.Enabled=True(计时器归零)。
B端:
收到数据时检测是不是"Ping",如果是就发送"Pong"。
cryptonym 2003-10-21
  • 打赏
  • 举报
回复
我是用的定时发送固定数据解决的。没有想出什么更好的办法。收不到数据就是断线咯。
wensnow 2003-10-21
  • 打赏
  • 举报
回复
我也在为这个问题头疼呢。我有试过在上述状态下Winsock的Error事件根本没有触发。还有“如果在一定时间内没有回复的话,即短线”这个一定时间如何判断和把握?如何更改连接时间?
icemanzhai 2003-10-20
  • 打赏
  • 举报
回复
当断开网线或非法断线的情况下,winsock.status 是检测不出来的,有两种方法可以解决,一是发数据包,如果在一定时间内没有回复的话,即短线,二是winsock有error事件,但它不是时刻都准的,你可以两个方法都用。
aha99 2003-10-20
  • 打赏
  • 举报
回复
可以检测winsock的状态,winsock.status ,由于winsock的处理有延迟,所以要加上延迟处理。

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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