用技术解决困惑:解决校园网掉线时自动重启问题
来源:互联网 发布:淘宝艾灸盒哪个牌子好 编辑:程序博客网 时间:2024/05/18 16:13
解决校园网掉线时自动重启问题
在学校常常会遇到校园网狗血般经常性断网,断网原因多种多样,有些是校园网技术落后,负载太多时故障性掉线,有些则是检测到开启wifi而主动掉线。
一、如何解决校园网断网后自动重新启动,并且重新开启wifi?
以下为题主的解决方案,采用C#编写,其实如果你愿意的话,用脚本编写也是一种明智的选择,而且效率更高,但是如果要做到人人都能够方面操作的话,个人认为winform是一种相对比较好的选择。
1)定时检测网络,我这里采用的是cmd命令ping
2)抓去ping结果,对结果进行解析,根据解析结果做出反应
①ping通:状态栏显示网络正常。
②ping不通:状态栏显示网络状态,并且杀掉校园网登录软件以及开启wifi的软件进程,题主的是锐捷和猎豹wifi,你必须清楚的知道你的进程的名称或者进程ID号,重启时因为需要用到软件的路径,所以你也必须知道软件的路径名。
二、关键代码
这里我用的是一个定时器timer,设定timer的值(毫秒),当间隔一定时间之后,就会触发timer1_Tick事件,接着打开cmd,发送命令,获取命令结果,然后再处理。
1、网络检测代码块
public bool netCheck() { System.Diagnostics.Process proIP = new System.Diagnostics.Process(); proIP.StartInfo.FileName = "cmd.exe"; proIP.StartInfo.UseShellExecute = false; proIP.StartInfo.RedirectStandardInput = true; proIP.StartInfo.RedirectStandardOutput = true; proIP.StartInfo.RedirectStandardError = true; proIP.StartInfo.CreateNoWindow = true;// 不显示 cmd 窗口 proIP.Start(); proIP.StandardInput.WriteLine("ping baidu.com"); proIP.StandardInput.WriteLine("exit"); string strResult = proIP.StandardOutput.ReadToEnd(); proIP.Close(); if (strResult.IndexOf("(0% 丢失)") != -1) { return true; } else { return false; } }
2、网络重启代码块
System.Diagnostics.Process proIP = new System.Diagnostics.Process(); proIP.StartInfo.FileName = "cmd.exe"; proIP.StartInfo.UseShellExecute = false; proIP.StartInfo.RedirectStandardInput = true; proIP.StartInfo.RedirectStandardOutput = true; proIP.StartInfo.RedirectStandardError = true; proIP.StartInfo.CreateNoWindow = true;// 不显示 cmd 窗口 proIP.Start(); proIP.StandardInput.WriteLine("taskkill /f /t /im 8021x.exe"); proIP.StandardInput.WriteLine("taskkill /f /t /im kwifi.exe"); proIP.StandardInput.WriteLine("RuijieSupplicant"); proIP.StandardInput.WriteLine("kwifi"); proIP.StandardInput.WriteLine("exit"); proIP.Close(); toolStripStatusLabel1.Text = "锐捷重启完成"; NetStatus = "锐捷重启完成"; Write("Record.txt", NetStatus);
3、日志文件记录
public void Write(string path, string record) { FileInfo finfo = new FileInfo(path); using (FileStream fs = finfo.OpenWrite()) { //根据上面创建的文件流创建写数据流 StreamWriter w = new StreamWriter(fs); //设置写数据流的起始位置为文件流的末尾 w.BaseStream.Seek(0, SeekOrigin.End); w.Write("{0}\t{1}\t{2}\n", DateTime.Now.ToString("yyyy-MM-dd"), DateTime.Now.ToLongTimeString(), record); //清空缓冲区内容,并把缓冲区内容写入基础流 w.Flush(); //关闭写数据流 w.Close(); } }
三、示例
参考程序:校园网防掉线.,2017.4.2
锐捷防掉线(更新版),需要配置环境变量,可通用,2017.4.4
0 0
- 用技术解决困惑:解决校园网掉线时自动重启问题
- 解决虚拟机用校园网不能上网问题
- 解决XP系统每次关机都自动重启问题
- Androidの解决自动旋转导致activity重启问题
- 解决RobotFramework用例执行失败自动重跑问题
- ubuntu 和 centos 解决校园网问题
- 解决校园网中无法创建socket问题
- 电脑自动重启故障分析解决
- 自动重启故障的分析解决
- 电脑自动重启故障分析解决
- 自动重启故障的分析解决
- 双缓冲技术解决MFC重绘闪烁问题
- 用端口复用技术解决tcp连接下服务器主动关闭连接后不能立即重启的问题
- android -- 小功能 解决自动旋转导致activity重启问题
- 解决eclipse+tomcat开发时候修改配置文件自动重启服务器问题
- 解决android系统进行OTA升级失败时进入recovery界面不能自动重启问题
- 如何解决testng执行用例失败自动重跑问题
- 解决校园网下载不了sun网站上的软件问题
- PHP文件上传与下载
- nodejs安装 第一个node应用
- Ecshop模板开发(五):商品详情页图片相册jqzoom放大
- Problem A: 时间和日期类(I)
- Linux常用软件安装命令
- 用技术解决困惑:解决校园网掉线时自动重启问题
- DB2数据库与Oracle不兼容导致的DB2中不能使用DUAL查询
- UVA 11882 Biggest Number (搜索+剪枝(dfs+bfs))
- mysql总是语法出错,可能是字符集的问题
- bzoj1191: [HNOI2006]超级英雄Hero
- 【转载】Objective-C中NSArray和NSMutableArray的基本用法
- 【hdoj_1015】Safecracker(排列组合)
- 安装完sql server2008后系统80端口 被占用 解决方案
- NYOJ 119 士兵杀敌(三)