如何扫描网络以查找特定外设

时间:2015-02-03 14:41:44

标签: c# networking tcp ethernet icmp

我正在为基于Arduino芯片的家庭自动化创建一些小型电子模块,并具有以太网连接功能。如果可能的话,我会尽量让他们用DHCP获取IP地址,但我也想构建一个C#应用程序来配置这些模块,我希望我的软件可以扫描网络以自动检测我的模块,作为惠普打印机驱动程序,可以自动检测网络上的打印机。

我想到了:

  1. 获取计算机的IP和掩码以确定IP集
  2. 然后多线程ping或HTTP请求到集合的每个IP
  3. 检查回复并获取mac地址
  4. 查看mac地址是否与我的设置匹配
  5. 执行特定的http请求以检索"模型"该模块,并知道如何与他互动
  6. 这种算法是否合理,或者有人知道更有效的方法吗?就像广播地址上的广播请求一样,看看会有什么回复?任何样品或想法?

2 个答案:

答案 0 :(得分:0)

完全合情合理。直接进行低级访问以将arp请求输出并获取arp-table有点棘手,但网站上有几个问题。 请注意,设备无需应答ping即可在网络上运行。查看您使用的芯片上的文档。

答案 1 :(得分:0)

假设您只想在同一网段上发现,我实际上建议使用广播消息(UDP)。当然,您必须在设备上开发侧面以响应该广播并听取这些响应。收到回复后,您可以使用首选方法直接与设备通信。