用技术解决困惑:解决校园网掉线时自动重启问题

解决校园网掉线时自动重启问题

在学校常常会遇到校园网狗血般经常性断网,断网原因多种多样,有些是校园网技术落后,负载太多时故障性掉线,有些则是检测到开启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

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值