关于使用Timer定时监测网络是否ping通

本文探讨了在持续ping过程中遇到的网络异常检测、内存消耗优化及大规模ping请求对网络带宽的影响,并提供了针对性解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目需要连接某台具体服务端,如果连不上则实时提示,开始使用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的电脑宽带阻塞

大牛们,请指导

转载于:https://www.cnblogs.com/JohnnyBao/p/4447033.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值