网内设备"/>
探测局域网内设备
- 需求:
探测当前局域网内的所有在线设备 - 设计想法
a. 采用TCP探测的方法, 经实践后,发现实现复杂遂放弃
b. 采用UDP广播的方式,实践后发现,有些设备接受不到UDP广播,由于进度原因未做深入探究
c. 采用ARP广播,获得所欲在局域网内的设备,然后发生身份确认消息包,得到确认的确定为在线设备。 - 结论
ARP广播探测效率任然不够理想,遇到这样的问题,代码中使用了windows提供的官方函数SendARP(), 经实际测试发现,多线程的情况下,会低概率的出现设备在线但无法探测到的现象,很想知道是什么原因,若是找到答案,希望可以不吝赐教。 - 实现代码
以下为基于第三种想法实现的代码
#include <windows.h>
#include <stdio.h>
#include <iphlpapi.h>
#include <functional>#pragma comment (lib,"ws2_32.lib")
#pragma comment (lib,"iphlpapi.lib")
// 扫描网络
void ScanningNetWork4Onlin()
{// 初始化socketWSADATA data;WORD wVersion = MAKEWORD(2, 2);WSAStartup(wVersion, &data);hostent *pLocalHost;HANDLE hEvent;// 获得本机IP结构pLocalHost
更多推荐
探测局域网内设备
发布评论