如何判断当前socket的连接有效性
需求:
服务器端S保持住每个客户端C的连接,将消息转发到另一个终结点D。当D处理完成后返回结果到S,S将结果再发送到C。
实现思路:
S将为每个连接L生成唯一ID后存储到Dictionary,然后转发到D,D返回结果,S查找结果中ID对应的L,将结果发送到C。
问题:
判断每个L的有效性,无效就释放资源。
各程序语言:
S : c#
C : vc6
D : c#
已用过的方法:
S中单独线程对每个L进行无阻止0字节的发送,如果发送成功或返回错误代码为10035的错误,表示连接有效。如果S和C都为c#语言,则测试通过(C不会收到任何数据)。但是和VC6的程序测试时发现C总是收到0长度数据。因为C收到数据后就会断开连接,但这并非最终结果,所以此方法不可行。
------解决方案--------------------貌似比较困难吧。
比如网线突然被剪断的情况,就无法处理了。
可以加个心跳机制。
------解决方案--------------------加心跳線吧。