功能及用途
用于采集局域网所有计算机信息主要是mac地址,ip地址,主机名。
格式化读写函数
fprintf()格式化写
fscanf()格式化读
使用说明
IP文件:ip.txt
IP文件格式:ip+空格+其他信息
IP文件和该执行文件放同一目录
代码
// ALLMAC.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <Windows.h>
#include <WinBase.h>
#include <WinSock2.h>
#include <IPHlpApi.h>#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"IPHlpApi.lib")
#pragma comment(lib,"Kernel32.lib.")int _tmain(int argc, _TCHAR* argv[])
{CHAR szFilePath[MAX_PATH];/*GetModuleFileName(NULL,szFilePath,MAX_PATH);*/GetCurrentDirectory(MAX_PATH,szFilePath);//printf(szFilePath);CHAR macAddr[13]={0};ULONG Mac[2];ULONG MacLen;memset (Mac, 0xff, sizeof (Mac));MacLen = 6;char ip[16],info[100];FILE *fp;FILE *fpw;char szPath[MAX_PATH];sprintf(szPath,"%s\\%s",szFilePath,"ip.txt");fp=fopen(szPath,"r");sprintf(szPath,"%s\\%s",szFilePath,"mac.txt");fpw=fopen(szPath,"w");char szMacAddr[20];while(!feof(fp)){fscanf(fp,"%s %s",ip,info);BYTE MacAddr[6];IPAddr ipAddr=inet_addr(ip);DWORD hr = SendARP (ipAddr, 0, Mac, &MacLen);if(hr==0){PBYTE pbMac = (PBYTE)Mac;for (ULONG i=0;i<MacLen;i++){MacAddr[i]=pbMac[i];}char szMacAddr[18];sprintf(szMacAddr,"%02X-%02X-%02X-%02X-%02X-%02X",MacAddr[0],MacAddr[1],MacAddr[2],MacAddr[3],MacAddr[4],MacAddr[5]);printf("IP:%s\tINFO:%s\tMAC:%s\n",ip,info,szMacAddr);fprintf(fpw,"IP:%s\tMAC:%s\t备注:%s\n",ip,szMacAddr,info);}}fclose(fp);fclose(fpw);getchar();return 0;
}