看到了很多局域網內的主機掃描工具,在想怎么去實現這樣一個工具。前幾天看了Ping源碼--ICMP協議的實例,ICMP可以用來探測網聯網內的任一主機,ICMP和廣播地址結合來掃描局域網內的所有主機不是很容易嗎。
http://wenku.baidu.com/link?url=XIimPSkG3KXjcM1Rh8ZfjjBLnJmWh5IAULrtKQv99oLukRsRhdGN-Gl_PQzs5dXDcSngRVjnzswMjXAsB75c2evG35ENvKbf4tBtgxntDke
ErrCode = setsocketopt(sockRaw,IPPROTO_IP,IP_HDRINCL,(char *)flag,sizeof(int));
但是我使用前面的ping源碼測試ICMP廣播,看到的結果是只有5個主機給我了回復,而實際局域網內的主機數據很多。莫非真像前面這篇文章介紹的,windows平台對於廣播地址的ICMP命令不回復。而我需要重試254次ping?
這里要查看“137 端口”和“NetBIOS”協議,在pudn上搜索“局域網掃描工具”可以看到很多例子。