用技术解决困惑:解决校园网掉线时自动重启问题
2017-04-02 20:36
651 查看
解决校园网掉线时自动重启问题
在学校常常会遇到校园网狗血般经常性断网,断网原因多种多样,有些是校园网技术落后,负载太多时故障性掉线,有些则是检测到开启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
相关文章推荐
- 记一次Windows Server不断自动重启的问题的解决
- 客户机容易随机出现自动重启、游戏卡问题?不妨优化下BIOS中节能技术!
- 从库crash一直自动重启(mysqld got signal 11)问题解决
- win10系统下点击关机却自动重启的问题解决思路
- [置顶] linux系统tomcat应为被定时任务脚本监控自动部署,服务器重启导致同一个tomcat出现很多进程,kill -9杀死又出现等一系列问题解决。
- winXP 休眠后 自动重启 问题的解决办法
- Win7经常性的休眠后自动重启的问题如何解决
- 解决Eclipse+Tomcat修改java类自动重启,且报错的问题
- 解决windows 10关机自动重启的问题
- 点击右键 WIN 7 资源管理器老是自动关闭或者重启问题解决办法
- Androidの解决自动旋转导致activity重启问题
- 解决ssh自动掉线问题
- Windows Vista自动重启问题解决方法(转)
- win8系统关机时自动重启问题怎么解决
- 解决XP系统每次关机都自动重启问题
- 新配的客户机容易随机出现自动重启、游戏卡问题?不妨优化下BIOS中节能技术!
- [置顶] 如何解决eclipse中修改后台代码ctrl+s时总是自动重启服务的问题
- 解决Android后台清理APP后,程序自动重启的问题
- 【已解决】Xen下虚拟机执行Shutdown失败,开机自动重启虚拟机,并出现页故障问题