是这样的:
我用c#编写了服务器,同事用C写的客户端主要向服务器发送数据,用TCP连接,为了检测意外断开的网络,加了心跳包。
客户端每3分钟发个心跳包,若没收到服务器回复就隔40秒发,超过三次便认定与服务器断开连接。但是客户端会经常没收到服务器的回复,然后断开再重连。服务器那边处理客户端发来的数据和心跳包都是同一个函数。而且我另外用c#写的另外一个客户端主要接收服务器的数据,总共就出现两次心跳包没回复而断开连接。
各位有遇到这样的情况吗?怎么处理啊?
我用c#编写了服务器,同事用C写的客户端主要向服务器发送数据,用TCP连接,为了检测意外断开的网络,加了心跳包。
客户端每3分钟发个心跳包,若没收到服务器回复就隔40秒发,超过三次便认定与服务器断开连接。但是客户端会经常没收到服务器的回复,然后断开再重连。服务器那边处理客户端发来的数据和心跳包都是同一个函数。而且我另外用c#写的另外一个客户端主要接收服务器的数据,总共就出现两次心跳包没回复而断开连接。
各位有遇到这样的情况吗?怎么处理啊?
解决方案 »
- 我是在panel动态添加的多个picturebox,并且picturebox里显示图片,且图片地址是本地的,现在我要点击某个picturebox得到这个picturebox里图片的路径和名称?
- 构析函数
- 创建了一个windows应用程序,在form_load中完成了,我所需要做的事情
- 在window应用程序中如何引用第三方控件
- 求一个DATALIST中添加控件问题(在线等)谢!急
- [求助]反序列化的时候,能不能忽略xmlns,因为我有几十万个文件要反序列化,他们的命名空间并不完全一样(在线等)
- WinForm 中如何获得所有打开窗体的实例?
- 关于C#和.Net的两个小问题
- 请教asp.net第三方控件Infragistics的授权问题
- 比如说我加载这个界面时,listview中有全部要显示的值,但是我现在只想要符合我要求的值,我就要在文本框中输入编号1,哪么listview中的编号第一位为1的都留下,其余的消失,我该如何做?
- dbo.net 数据库数据导入问题
- 通过串口收发短信的例子,谢谢
Socket.IOControl(IOControlCode.KeepAliveValues, inValue, null);连接后执行一下上面的,就会在五秒之后每五秒发一次心跳包。0x1388是5000毫秒,可以自己设置。C中也有相应的调用方式。
这样设置之后,当心跳包超时(印象中默认应该是30秒)未接到,会在receive中引发异常,根据异常就可以断开连接了。