Z zwjChina Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-23 #1 直接使用Winsock API,对于一个已经连接好了的套接字,此时如果网络发生故障, 例如网线断了,如何判断该套接字上的连接已经断开?
H huntor Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-23 #3 如果网线断了,却没有消息发送或主动读取,是不能发现的。 所以很多应用协议里都加入了“链路检测”的协议包
人 人在昆明 Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-23 #4 如果断啦,socket 会返回一个异常,你捕捉他然后处理就是啦
娃 娃娃 Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-24 #7 最简单的伪代码。 var netok :boolean; begin try netok := true; 连接网络 except netok := false; showmessage('网络不OK!'); end;
最简单的伪代码。 var netok :boolean; begin try netok := true; 连接网络 except netok := false; showmessage('网络不OK!'); end;
Z zwjChina Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-25 #8 娃娃, 你对TCP可能不是很了解!:) 在一个套接字连接好之后,即使把网线拔掉也没办法获得异常,而且往该套接字发送几 个字符(数据量不大的情况下),发送(也就是Send,任然成功),这个时候,我该如何判 断网络已经断开了?
娃娃, 你对TCP可能不是很了解!:) 在一个套接字连接好之后,即使把网线拔掉也没办法获得异常,而且往该套接字发送几 个字符(数据量不大的情况下),发送(也就是Send,任然成功),这个时候,我该如何判 断网络已经断开了?
Z zwjChina Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-26 #10 to huntor 谢谢你,能告诉我如何定时检测链路吗?我用select,send都无法即时获得连接断开的信息。
H huntor Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-29 #11 sorry,前几天参加培训,没有上网。 “链路检测”是基于应用层通信协议为自己定义的情况的,不知道你的程序是否是这种情况。 我的想法是: 定义“链路检测包”和“链路检测应答包” socket客户端:定时发送“链路检测包”给服务端程序,若在一定时间内没有应答包送回, 则认为链路故障,断开连接即可; 之后若再连接就会根据实际情况返回是否成功的信息了。 socket服务端:除了对“链路检测包”回应“应答包”外,也可以设置用户连接状态表, 对于每个连接的客户端都定时发送“链路检测包”,没有应答的客户端则断开连接。 不知道是否适合你的情况。
sorry,前几天参加培训,没有上网。 “链路检测”是基于应用层通信协议为自己定义的情况的,不知道你的程序是否是这种情况。 我的想法是: 定义“链路检测包”和“链路检测应答包” socket客户端:定时发送“链路检测包”给服务端程序,若在一定时间内没有应答包送回, 则认为链路故障,断开连接即可; 之后若再连接就会根据实际情况返回是否成功的信息了。 socket服务端:除了对“链路检测包”回应“应答包”外,也可以设置用户连接状态表, 对于每个连接的客户端都定时发送“链路检测包”,没有应答的客户端则断开连接。 不知道是否适合你的情况。