拌合站软件开发(27)监测各项IP设备可访问性

需求分析:

之前项目设备之间的互联都是通过交换机,IP地址在同一个子网,默认设备之间网络都是联通的,但实际中发现想简单了,因为各种原因,会导致设备离线网络不通,而往往又是只有在司机过磅的时候发现,不管什么原因导致设备离线,客户都会认为是你的系统不稳定。所以计划开发对所有的IP设备可访问性做个监测。

实现的技术方案:

监测网络可达性,作者熟知的就是ping或者TCP/UDP发包,前者有一定的局限性,有些场合会禁止ICMP协议,只要提供服务那么肯定会开放端口,那么就可以做端口探测的方式监测是否存活。因为目前设备就是在局域网中,那么作者肯定首选最简单的方式ping来做实现了。

代码层面的实现:

一、ping实现监测设备存活

c#要实现ping检测功能应该将非常easy,使用System.Net.NetworkInformation 下的ping类即可。 定义一个静态异步函数了,我这里比较严格,如果ping的过程中只要有一次不成功那么就认定为网络是不通的。这个可以根据实际的网络环境来定,也可以多次循环,如果ping通了,那么就认为是通的。

cs 复制代码
 public static async Task<bool> IsIpReachableAsync(string ip, int timeout = 3000, int retryCount = 2)
 {
     using var ping = new Ping();
     for (int i = 0; i < retryCount; i++)
     {
         try
         {
             var reply = await ping.SendPingAsync(ip, timeout);
             if (reply.Status != IPStatus.Success)
                 return false;
         }
         catch (PingException) { /* 忽略特定错误 */ }
     }
     return true;
 }

二、通过端口检测来判断是否存活

主要就是使用socket 来建立连接,如果可以建立连接那么表明设备是存活的,如果不能建立那么表明网络是不通的。要引入 using System.Net.Sockets;

cs 复制代码
public static async Task<bool> IsPortReachableAsync(string ip, int port = 80, int timeout = 3000)
{
    using var client = new TcpClient();
    
    try
    {
        var task = client.ConnectAsync(ip, port);
        var completedTask = await Task.WhenAny(task, Task.Delay(timeout));
        
        if (completedTask == task && client.Connected)
        {
            client.Close();
            return true;
        }
    }
    catch { /* 捕获所有异常 */ }
    return false;
}

三、通过定时任务来检测设备存活

定时任务这里使用 System.Threading.Timer 来,作者设备比较少也要求不高,所以定时任务每10秒检测一次,如果断开,那么立即记录下日志,同时通过企业微信发送消息到指定的服务群中。具体实现不是本文的重点,就不在此细说了。

话题的衍伸

前面有文章说过通过建立心跳包来判断客户系统是否断网,一直在想如何改善系统的高可靠性。如果客户的日常网络断开,那么是否可以切换到紧急使用的物联网,走流量,保障系统的数据不中断。也有人可能要说为啥不把系统部署在本地不连互联网不就行了。这个就又是另外一个衍伸话题,网络租赁的模式才有收到后续服务费的可能,这样就不是一锤子买卖了。

相关推荐
EasyDSS9 小时前
连锁扩张管控难?一套视频会议/直播/点播/集群对讲EasyDSS音视频云平台打通门店全流程数字化
网络·音视频·easydss
比兔代理11 小时前
游戏、直播、远程办公遇到动态IP怎么办?
网络
Lzg_na11 小时前
ARP 地址解析协议详解
网络·网络协议
北京盛世宏博12 小时前
通信异常深度排查:以太网温湿度设备 TCP 粘包、UDP 丢包根治方案
单片机·网络协议·tcp/ip·udp·以太网·传感器·温湿度
上海广测检测科技有限公司12 小时前
消费类智能联网设备安全分级国标征求意见要点解析:三级五维框架与跨境对标逻辑
网络·经验分享
QZ1665609515913 小时前
金融数据流转监测排行:从看见到拦截的距离
网络·安全·网络安全·金融
paopaokaka_luck13 小时前
滑雪场管理系统(AI智能助手流式对话,ECharts 运营数据分析、教练、雪具与场地一体化预约,钱包支付退款、订单核销与服务评价)
java·人工智能·spring boot·网络协议·数据分析·echarts
CCblandy14 小时前
HTTP 长连接 3 类故障实测:[WinError 10053]、99 个 TIME_WAIT、69 次多余握手,4 种对策怎么选
后端·python·网络协议·http·云原生·性能优化·架构
雪雪爱冲浪15 小时前
2026 年网络爬虫领域的Puppeteer vs. Playwright
爬虫·网络协议·测试工具·接口隔离原则
zxanz115 小时前
SSL 证书申请下来快吗?
网络·网络协议·ssl