C# tcp 通信时,KeepALive 时自动断开 问题 急,急,急求大侠帮助

问题描述

在.net平台下使用c#进行tcp通信,客户端发送命令服务器端收到后执行命令,服务器端执行时间大概几个小时,然后返回给客户端结果。在此期间客户端使用阻塞的方式Read方法读取,为了防止TCP在长链接时断开,我启用了c#tcp中的KeepAlive机制,每三分钟发一次心跳包。但是过了一个多小时read()方法触发异常,“无法从传输连接中读取数据:你的主机中的软件终止了一个已建立的连接。”,我用wireshark查看,发现触发异常时候心跳包还能正常接收。不知道什么原因导致read异常,求大神解答,在线等!!!!

解决方案

解决方案二:
这个问题应该是服务端断开的,而不是客户端心跳这里。应该先判断是否已经断开连接,然后做好判断read方法是否应该退出
解决方案三:
楼主的连接能够维持几个小时已经成功了,对于这样的断线应该有重新连接的功能,当断线频繁的时候再考虑具体的原因.
解决方案四:
服务器端发回了数据,客户端一直收不到,然后服务器端就超时了,客户端也死了
解决方案五:
话说Read是什么方法?
解决方案六:
首先,不应该阻塞。其次,服务器端不应该只认一个会话。当客户端发现需要重连时,就会在另外一个会话中重新连接。那么服务器端就应该把返回消息发给新的会话。第三,客户端在收到服务器推送的消息时,判断这个消息的性质。如果是返回,就执行其之前已经注册过的回调处理方法(显然它与跟服务器的会话无关,而是跟消息本身唯一编号有关)。
解决方案七:
首先,不应该阻塞。其次,服务器端不应该只认一个会话。当客户端发现需要重连时,就会在另外一个会话中重新连接。那么服务器端就应该把返回消息发给新的会话。第三,客户端在收到服务器推送的消息时,判断这个消息的性质。如果是返回,就执行其之前已经注册过的回调处理方法(显然它与跟服务器的会话无关,而是跟消息本身唯一编号有关)。
解决方案八:
客户端不用扯上什么“KeepAlive机制”。它在发现无法收或者发消息时,重连服务器就行了。必须自动重连,你有这个机制吗?

时间: 2024-08-08 01:26:41

C# tcp 通信时,KeepALive 时自动断开 问题 急,急,急求大侠帮助的相关文章

Win7系统网络空闲时自动断开宽带连接怎么设置

  Win7系统网络空闲时自动断开宽带连接怎么设置: 1.点击右下角"网络"图标打开"网络和共享中心"; 2.然后点击更改适配器设置; 3.打开后,右键点击"宽带连接"选择属性; 4.打开属性后,我们切换到"选项",然后在"挂断前的空闲时间"后面选择一个空闲等待时间,如在多久空闲后自动断开,时间按自己需要设定,然后确定保存.

android 开发 java写的 tcp 通信库,注册选择器时异常!跪求java高手指点!!!

问题描述 android 开发 java写的 tcp 通信库,注册选择器时异常!跪求java高手指点!!! public void initialize() throws IOException { boolean done = false; try { Log.e(TAG,"SocketChannel.open:IP:["+hostIp+"Port:"+hostListenningPort+"]."); // 打开监听信道并设置为非阻塞模式 s

红米2黑屏时WiFi自动断开如何取消

第一步:我们只要在红米设置中找到 wlan设置 进入 第二步:在弹出菜单中我们选择高级 如下图所示 第三步:选择wlan休眠策略 如有永久,仅退充电时,从不几个选项 注意:部分软件为了帮你手机省电,有时候也会帮你设置为自动断开的.

winform连接内置数据库时一调试数据库就自动断开

问题描述 winform连接内置数据库时一调试数据库就自动断开 解决方案 你整个连接字符串就没有写对.后面加上Persist Security Info=False; 如果还不行,检查sql ce驱动有没有装对. 解决方案二: 第三张图是调试前确认数据库为打开的状态,第一张是在点击调试的一瞬间数据库关闭了 然后运行失败. 解决方案三: 在Oracle数据库实现自动断开后再连接在Oracle数据库实现自动断开后再连接 解决方案四: 你这是连接数据库的时候异常了,你捕获一下异常,查看一下具体的错误信

让Windows 7系统休眠时宽带连接不断开

win7系统的休眠模式真心的好用啊,它可以帮我们节省电量.也能让我们降低能耗,但是有一点不好的就是在休眠模式下,我们的网络会自动断开,就比如我们在下载的时候,想着让它自己去下载东西,我们去休息一下,却发现回来还是那样,没下载东西的啊.这个就郁闷的了.在下文小路将教你在win7下休眠不在断网. 问:我的电脑是Win7系统64位的,之前的设置休眠时网络都是正常连接的,可是最近不知道修改了什么,一休眠就断网了,休眠的时候都无法下载了,请问该如何设置让休眠的时候可以继续下载啊? 答:这个问题其实也简单,

为何CorelDraw精确裁剪图像时图像会自动居中

问:CorelDraw精确裁剪图像时图像会自动居中,怎么办? 答: 用CorelDraw精确裁剪图象的时候,很多人会碰到置入框内的图象自动居中,如果我们不想让它自动居中,可以用下面的方法.通常我们在用轮廓图抠图时要用到这个技巧. CorelDraw 9中,按CbrL+J,选择"工作空间-编辑",在里面找到一项"将新的图框精确裁剪自动置中"把前面的勾勾去掉就可以了,外加原位剪裁图象操作,这一点和AI的蒙版很像可以实现CorelDraw中的简单抠图的需要. 如果你懒得这

服务器-UDP通信问题,时通时不通

问题描述 UDP通信问题,时通时不通 5C 服务器用的UDP通信,多个客户端,现在问题是服务器跟一部分客户端通信没有问题,而只能收到另一部分客户端的数据,服务器回复了应答,但是客户端接收不到应答,这一部分客户端有时又可以正常通行,这样的问题怎么处理,怎么定位? 解决方案 UDP大批量传输数据时的丢包问题优化 解决方案二: UDP丢包,这是正常现象,你要有失败重发机制. 解决方案三: 下载个网络调试助手,对比一下,看看是你的程序不完善,还是网络的问题. 解决方案四: 如果你采用udp的话,首先保证

如何在设计网站时将文件自动下载到本地,下一次访问时自动先在本地读取?

问题描述 如何在设计网站时将文件自动下载到本地,下一次访问时自动先在本地读取? 远程云服务器上有图像.视频等文件,为提高速度.降低费用,想: 1.浏览器初次访问远程服务器,下载图片和视频: 2.下载的图片和视频存在本地,并供浏览器使用: 3.后续浏览器打开网页要使用图像和视频,自动在本地搜索,若没有,再在服务器上下载. 如何实现?不用activex.java ap 实现,免得使用者需要安装加载项. 解决方案 html5的话,可以用localstorage,IE9以上以及主流浏览器支持. 用法自己

mysql-SSH连接数据库时,无法自动创建表,且tomcat无法启动

问题描述 SSH连接数据库时,无法自动创建表,且tomcat无法启动 jdbc配置: driverClass=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mydata user=root password=root 当数据库中没有mydata表时,无法自动创建,且tomcat启动不了,停留在Initializing Spring root WebApplicationContext.如果手动创建mydata表,tomcat可以启动,