C# udpclient 发送数据断网后自动连接的方法
需求
有一个winform程序,
用来调试路由器和对路由器吞吐量进行测试
需要后台不断的接收来自udp服务器端的数据,同时要发送数据到服务器端(无线路由器)
设计时候,通过一个线程,for(;;)死循环来接收数据,
另一个通过界面按钮发送相关指令(实际情况是
正常流程,没有任何问题.
但是
该流程中,有一个步骤是winform通过http协议上传固件到路由器,
等待路由器重启完毕,
正常流程,是没有任何问题.
但是客户环境,尤其重启期间,测试PC机因为找不到ap接入点,会去介入其它ap,有可能不是同一网段,导致网络环境已经变更.
此时,udp无法发送,也无法接收.
发送端可以通过udp重连设置.接收端使用的发送端的udp静态对象,但依然无法接收.
无论.NET提供的socket还是updclient封装udp,都无法很好的处理这种情况.
因此,解决思路就是
通过一个信号量
ManualResetEvent event_ok = new ManualResetEvent(false);
ManualResetEvent event_th = new ManualResetEvent(false);
ok的信号量是用来测试路由器是否通顺,不通过ping的原因是因为非测试路由器也可以ping通.
每次发送后,等待路由器返回ok的指令,如果没有收到指令,等待信号量超时.
则认为网络中断
设置线程同步变量为false
接收线程当同步变量为false时候,设置th信号量,
则发送端线程等待线程终止信号量后重新开启接收线程,再次发送即可.
C# udpclient 发送数据断网后自动连接的方法的更多相关文章
- Delphi使用ADO连接网络数据库,断网后重连问题
原始文章: https://blog.csdn.net/blog_jihq/article/details/11737699# 使用TADOConnection对象连接网络数据库(以MySQL为例), ...
- Navicat for MYSQL 断网时本地连接无法打开,2005错误
Navicat for MYSQL 断网时本地连接无法打开,2005错误 NO1 提示下图: NO2 解决方法: (1)选中本地连接,右键 连接属性 (2) 将 主机名或IP地址 这一栏改为 127. ...
- [Elixir002]节点启动后自动连接其它节点
问题: 如何指定一个节点在启动后自动连接到别的节点上? 这个我们要使用到sys.config,这是erlang的配置文件,这个文件一般都是$ROOT/releases/Vsn下 1. 首先我们要先启动 ...
- ecmall用户登录后自动退出解决方法
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- MySQL集群在断网后再启动报"Unable to start missing node group"问题处理
总所周知,MySQL集群又名ndb cluster,而ndb就是network based database的简称,数据库节点之间依靠网络来通信和保证数据分块间的一致性.今天由于机房交换机损坏,导致集 ...
- 页面加载完后自动执行一个方法的js代码
1.在body中用onload: <body onload="conver()"> 2.在脚本中用window.onload: <script type=&quo ...
- 用js实现在加载完成一个页面后自动执行一个方法
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- css 文本超出容器长度后自动省略的方法!
我们在给用户显示文本内容的时候,往往需要避免文本内容超出容器宽度,防止换行溢出,小弟在网上找了下发现网上的实现仅仅只是实现了用 ...省略了的功能! 而并没有获取光标提示的功能,所有小弟就结合网上的代 ...
- [eclipse]改项目名称后tomcat连接问题解决方法
背景:在我们使用eclipse进行项目开发时,有时候会需要修改项目名称,当改动项目名称后发现tomcat启动访问出现问题,使用新的项目名称不可行,使用旧的项目名称却可以.修改web.xml里面的dis ...
随机推荐
- sql server 安装后登录服务器
计算机名\数据库实例名 z*******f-PC\zzf
- Nodejs_day01
helloworld.txt的内容: 我是nodejs 阻塞式调用 var fs = require('fs'); var data = fs.readFileSync('helloworld.txt ...
- ANSI
为了扩充ASCII编码,以用于显示本国的语言,不同的国家和地区制定了不同的编码标准,由此产生了GB2312.BIG5.JIS等各自的编码标准.这些使用两个字节来代表一个字符的各种汉字延伸编码方式被称为 ...
- python在linux上的GUI无法弹出界面
在进行python写GUI程序的时候,使用Tkinter,发现无法执行程序,报错如下: X connection to localhost:10.0 broken(explicit kill or s ...
- js中location.search、split()HTML5中localStorage
1. location.search在客户端获取Url参数的方法 location.search是从当前URL的?号开始的字符串 如:http://www.baidu.com/s?wd=baidu&a ...
- php框架推荐
ThinkPHP, 国内开发的框架,特别容易入门,中文文档细致,表述准确. Laravel, 国外框架,非常高级的一个框架,特别是前端比较模块化,但入门难一些,速度不高. laravel在lampp ...
- ubuntu 14.04 root破解
Advanced Programmable interrupt controller 高级可编程中断控制;Advanced create table `users` (`id` int(11) not ...
- 前端复习-01-dom操作包括ie和现代浏览器处理相关
一.事件流事件流描述的是从页面中接受事件的顺序.IE的事件流是事件冒泡流,而Netscape的事件流是事件捕获流1.事件冒泡事件冒泡,即事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然 ...
- 解决ehcache的UpdateChecker问题
问题描述 项目中用了ssh框架,每次启动tomcat的时候都特别慢,会在这样一句话下面停留很久 [2016-01-08 23:55:51,517 INFO UpdateChecker.java:doC ...
- oracle数据库连接字符串
不在项目加入tsname.ora的托管写法: <add name="CONN" connectionString="data source=127.0.0.1:15 ...