C# 基于udp广播收集局域网类所有设备信息
作者:Anna 发布时间:2022-04-28 00:17:23
标签:c#,udp,广播,设备信息,局域网
一个简单好理解的例子,复制过去就能用,能看到效果
首先对功能的思考,他怎么去实现
1.制定udp广播的端口(如果收发用同一个端口就会一直接收到自己给自己广播的消息)
2.启动后向局域网广播约定的字符串(字符串包含了广播端的IP和用来接收响应的端口号)
3.设备需要内置一个功能,打开约定的接收广播端口,持续做好对udp服务端的响应工作,接收广播字符串后解析,向广播端发送自己的IP和自己设备的型号信息(送至:解析到的IP,端口号)
4.广播端接收这个设备发送的字符串,解析生成模型,放进动态的list,方便实时监控
5.循环去广播来进行设备的监测,设备下线后从list移除,就是已经不响应udp服务器的广播了,考虑到udp传输的丢包问题,设备连续5次没有响应,判断为下线
我们需要做两件事,一是广播喊话让局域网内所有听到的设备都要有回应,二是收集他们的回应,所以需要两个程序
一个是喊话的UdpBroadCast,一个是收集的UdpClient
用网络调试助手模拟下位机的设备
收到广播 然后发送自己的信息
接收端收到后判断格式是不是正确,正确在进行下一步处理
创建更多的终端
收到,下位机只需要按规定发送自己的名字就好了,我们是可以拿到发送过来的IP和端口号的
然后把这些存入模型,就得到了一个设备列表模型
约定一个时间去更新模型的设备,然后写入json文件
外部读文件就好了,因为发送端和接收端是一直在运行的
把列表里的设备信息定时存到文件是和外界做一个交互
来源:http://www.uml.org.cn/net/202012162.asp?artid=24033
0
投稿
猜你喜欢
- HttpResponse 讲解HttpServletResponse概述:在创建Servlet时会覆盖service()方法,或doGet(
- Java CharArrayReader流一、CharArrayReader流定义API说明:该类实现了一个可用作字符输入流的字符缓冲区,即
- using System;using System.Collections.Generic;namespace Demo{ &nb
- 第一次写上传图片的代码,碰到很多问题。昨天做了整整一天,终于在晚上的时候成功了。大声欢呼。但是,做完之后,还是有很多问题想不通。所以在这里也
- private void txtBarCode_KeyPress(object sender, KeyPressEventArg
- 一、前言前面我们讲了Java的入门知识,相信许多小伙伴对Java基础有一个大概的认识了,这也为我们后续的学习打下了基础,所以我们可以继续学习
- 1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是如果有Synchr
- 在WPF中,TreeView默认情况是不支持右键选定的,也就是说,当右键点击某节点时,是无法选中该节点的。当我们想在TreeViewItem
- 一. 安装依赖包yum install -y wgetyum install -y gcc-c++yum install -y zlib-d
- 本文实例分析了C#实现的24点游戏。分享给大家供大家参考。具体如下:1. 24点游戏规则及算法规则:给出4个自然数,找出能够求出24的四则运
- 本文实例讲述了Java中的异常和处理机制。分享给大家供大家参考,具体如下:简介程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期
- 首先说微信企业号的开发模式分为:编辑模式(普通模式)和开发模式(回调模式) ,在编辑模式下,只能做简单的自定义菜单和自动回复消息,要想实现其
- 详解HDFS多文件Join操作的实例最近在做HDFS文件处理之时,遇到了多文件Join操作,其中包括:All Join以及常用的Left J
- Springboot 实体类生成数据库表JPA:springboot -jpa:数据库的一系列的定义数据持久化的标准的体系学习的目的是:利用
- 前言由于现在网络层已经升级到RxJava2.x相关的了,所以需要做些调整。虽然RxJava1.x和RxJava2.x同属RxJava系列,但
- 在Android studio实现简易计算器App并实现加减乘除功能,供大家参考,具体内容如下结果activity_main.xml<
- springboot 针对jackson是自动化配置的,如果需要修改,有两种方式:方式一:通过application.yml配置属性说明:#
- WPF中有一个DrawingContext类,该类提供了很多画法方法,例如DrawLine,DrawText,DrawRectangle等。
- 1.在C#中,类名首字母需大写。如:class Student2.在C#中Main()方法有四种形式:static void Main(st
- 首先来看一下工具StringUtils的判断方法:一种是org.apache.commons.lang3包下的;另一种是org.spring