IP扫描;SendARP() 查询本地网络在线电脑IP,MAC,以及获得主机名。
来源:互联网 发布:mac android sdk ant 编辑:程序博客网 时间:2024/04/29 17:08
#include <windows.h>
#include <stdio.h>
#include <iphlpapi.h>
#include <winsock.h>
#pragma comment(lib, "ws2_32")
#pragma comment(lib, "iphlpapi")
int main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return -1;
}
HRESULT hr;
ULONG pulMac[2];
ULONG ulLen;
in_addr beginaddr, endaddr; //
unsigned long be, en;
char badd[16]={0};
char eadd[16]={0};
char add[16]={0};
char name[30]={0};
hostent *pht=NULL;
printf("输入起始ip地址:");
scanf("%16s",badd);
printf("输入终止ip地址:");
scanf("%16s",eadd);
beginaddr.S_un.S_addr = inet_addr(badd);
endaddr.S_un.S_addr = inet_addr(eadd);
be = ntohl(beginaddr.S_un.S_addr);
en = ntohl(endaddr.S_un.S_addr);
printf("%-18s %-20s %-20s/n", "IP", "NAME", "MAC");
while(be<=en)
{
ulLen = 6;
hr = SendARP(beginaddr.S_un.S_addr, 0, pulMac, &ulLen);
if(hr == NO_ERROR)
{
memcpy(add,inet_ntoa(beginaddr),16);
pht = gethostbyaddr((char*)&beginaddr, sizeof(beginaddr), AF_INET);
if (pht != NULL)
{
size_t i, j;
char * szMac = new char[ulLen*3];
PBYTE pbHexMac = (PBYTE) pulMac;
for (i = 0, j = 0; i < ulLen - 1; ++i) {
j += sprintf (szMac + j, "%02X:", pbHexMac[i]);
}
sprintf (szMac + j, "%02X", pbHexMac[i]);
memcpy(name, pht->h_name, 30);
printf("%-18s %-20s %-20sis online./n", add, name, szMac);
delete [] szMac;
}
be++;
beginaddr.S_un.S_addr = htonl(be);
}
else
{
be++;
beginaddr.S_un.S_addr = htonl(be);
continue;
}
}
WSACleanup( );
system("pause");
return 0;
}
- IP扫描;SendARP() 查询本地网络在线电脑IP,MAC,以及获得主机名。
- 局域网IP、MAC、主机名扫描
- 获得本地主机名和IP地址
- 如何高效实现扫描局域网IP、主机名、MAC和端口
- 查询局域网内在线电脑IP
- 根据主机名获得IP及根据IP获得主机名
- 获得主机名和ip地址
- 获得主机名 和 IP地址
- VC++ 获得主机名与IP
- 获得主机名和IP地址
- C++获得主机名和IP
- 如何通过IP地址查找MAC地址以及主机名
- java 获取本地ip 主机名
- 根据主机名查ip,局域网内,通过主机名获得IP
- 获取本地IP与网络Ip及Mac地址
- 根据IP地址查询主机名
- 获得本地主机IP
- 获得本地IP地址
- linux的物理内存与线性地址空间布局--2
- new的几种用法
- 回首1995年的互联网
- 高性能SQL语句的35条方法
- 和某mid的一次邂逅(三)
- IP扫描;SendARP() 查询本地网络在线电脑IP,MAC,以及获得主机名。
- C#中反射机制的理解
- 字符串哈希函数
- POJ 2503 输入处理
- 负载均衡背景知识
- OPenGL第二响
- Eclipse无法编译rt.jar中的某些包解决办法
- 24岁了,做个精致的电子工程师--剑雨琴侠
- 享受Android应用程序的Java技术盛宴(转)