zoukankan      html  css  js  c++  java
  • 关于使用Timer定时监测网络是否ping通

    项目需要连接某台具体服务端,如果连不上则实时提示,开始使用Timer实时检测

     void timer_Tick(object sender, EventArgs e)
            {
                Ping pingSender = new Ping();
                PingReply reply = pingSender.Send("192.168.1.104", 1000);
                if (reply.Status != IPStatus.Success)
                {
                    Message.show("网络异常")
                }
            }

    如果我Timer一直执行的话,会导致该程序的内存一直增长,后来测试发现不是Timer的问题,Timer一直运行不会影响内存,是在Timer中使用Ping导致问题,Ping后估计会有返回值,没有清除

    后修改,把Ping pingSender = new Ping() 拿出来,添加一个PingCompleted事件,释放解决问题

     void pingSender_PingCompleted(object sender, PingCompletedEventArgs e)
            {
                (sender as IDisposable).Dispose();
            }

     后续问题:

          如果再一直ping的过程中,出现某次ping的时候timeout,就会出现错误,做修改,当ping的不成功数大于具体次数时才提出错误。

         第二个问题,当有成千上万台电脑都在ping 某个IP时,会不会造成那个IP的电脑宽带阻塞

    大牛们,请指导

  • 相关阅读:
    数字校验1
    数字校验
    千分位保留4位小数
    如何把一个字符串格式化位4位一个空格
    from里button会提交表单
    重新学习JavaScript2015年11月3日
    java设计模式之代理模式
    自定义标签 (choose)
    自定义标签 foreach
    获取一个表格的一行的值
  • 原文地址:https://www.cnblogs.com/JohnnyBao/p/4447033.html
Copyright © 2011-2022 走看看