当前位置: 代码迷 >> C# >> C# 怎么捕获串口断开和tcp/udp被动断开
  详细解决方案

C# 怎么捕获串口断开和tcp/udp被动断开

热度:42   发布时间:2016-05-05 04:36:44.0
C# 如何捕获串口断开和tcp/udp被动断开
本帖最后由 tornodo 于 2015-03-11 16:04:01 编辑
一个工作线程是串口连接,循环读取数据,另一个工作线程是tcp或udp(根据配置)连接服务器获取数据。
1.如何在串口断开或被拔掉的时候捕获到特定的异常,然后就知道应该重新去连接,直到连接成功,再继续读取。
2.如何捕获tcp或udp被动断开或是网络中断或是服务器异常停止,这时就应该重新连接,直到连接成功,再继续读取数据。

两个线程都是在读取Modbus服务器,网络线程没法做心跳。
求解。
------解决思路----------------------
tcp是面向连接的协议,可以用try捕获异常
串口和udp是面向非连接的协议,断开了也没法知道
你只能程序自己判断超时了没有数据返回就算异常了
------解决思路----------------------
然后就知道应该重新去连接
本来就是面向非连接的协议,哪里有连接一说,跟谈不上重连的问题
------解决思路----------------------
引用:
Quote: 引用:

tcp是面向连接的协议,可以用try捕获异常
串口和udp是面向非连接的协议,断开了也没法知道
你只能程序自己判断超时了没有数据返回就算异常了

亲,捕获哪个异常,如何精确判断某个异常就是断开了,求教。网上说法不一,越搜索越迷糊

反正你另外两种通信方式也没有异常可以捕获
完全都可以利用发送后有无接收去判断
如果异常断开,不管是执行write还是read都会抛异常的
  相关解决方案