我正在为基于Arduino芯片和以太网连接的家庭自动化创建一些小型电子模块 . 如果可能的话,我会尽量让他们用DHCP获取IP地址,但我也想构建一个C#应用程序来配置这些模块,我希望我的软件扫描网络以自动检测我的模块,如例如,HP打印机驱动程序可以自动检测网络上的打印机 .
我想到了:
-
获取计算机的IP和掩码以确定IP集
-
然后多线程ping或HTTP请求到集合的每个IP
-
检查响应并获取mac地址
-
查看mac地址是否与我的设置匹配
-
执行特定的http请求以检索模块的"model",并知道如何与他交互
这个算法是合理的还是有人知道更有效的方法?就像广播地址上的广播请求一样,看看会有什么回复?任何样品或想法?
2 回答
完全合情合理 . 直接进行低级访问以将arp请求输出并获取arp-table有点棘手,但网站上有几个问题 . 请注意,设备无需应答ping即可在网络上运行 . 查看您使用的芯片上的文档 .
假设您只想在同一网段上发现,我实际上建议使用广播消息(UDP) . 当然,您必须在设备上开发侧面以响应该广播并听取这些响应 . 收到回复后,您可以使用首选方法开始与设备直接通信 .