socket两端 有正常的数据相互传输,但是并不是一直有数据交互,
因此,为了避免长时间没有数据交互这个连接被操作系统或者防火墙之类的东西断掉,
想在socket空闲的时候发送心跳包。
思路是这样的,疑惑在于,怎么判断socket是否空闲,怎么取监控这个socket
好比
业务线程,客户端发送一个请求,服务端返回一个结果响应
心跳线程,客户端发送心跳数据,服务端回执一条响应心跳的数据
当客户端发送请求时,刚好服务端在回执心跳,这样应该就是阻塞了吧
所以在业务线程没有数据交互的时候,让心跳线程跑起来
而怎么确定业务线程那块没有数据交互
@wendal 感觉不是很严谨
@wendal 您说的那个心跳包是 这样的方式吗
//在套接字上发送一个紧急数据字节。
sendUrgentData(int data) ;
这个方法在win7下发送17次会报错,所以我这里的心跳数据和业务数据是一个数据结构,只是根据它内部的属性区分它是业务数据还是心跳数据
可以理解为这两个线程发的都是业务数据
@wendal 好的吧,我先试试看