#include<stdio.h>
#include<iphlpapi.h>
#pragma comment(lib,"ws2_32.lib")
#pragma comment (lib,"iphlpapi.lib")
char s[20];
char e[20];
void scan(char *ip)
{
HRESULT a;
ULONG b,c[2],len=6;
b=inet_addr(ip);
ZeroMemory(c,0);
a=SendARP(b,NULL,c,&len);
if(a==NO_ERROR)
{
size_t i,j;
char d[10000];
PBYTE g=(PBYTE)c;
for(i=0,j=0;i<len-1;i++)
{
j+=sprintf(d+j,"%02x",g[i]);
}
sprintf(d+j,"%02x",g[i]);
printf("主机%s可达",mac地址为:%s\n,ip,d);
}
}
void main(int argc, char **argv)
{
char *addr;
int p;
addr=strchr(argv[1],'-');
p=addr-argv[1]+1;
strncpy(s,argv[1],p-1);
strncpy(e,addr+1,strlen(argv[1])-p);
struct in_addr target_addr;
ULONG ips=inet_addr(s);
ULONG ipe=inet_addr(e);
ips=ntohl(ips);
ipe=ntohl(ipe);
for(ULONG k=ips;k<ipe;k++)
{
target_addr.S_un.S_addr=htonl(k);
scan(inet_ntoa(target_addr));
Sleep(10);
}
}
错误代码:
microsoft sdks\windows\v6.1\include\ifdef.h(153) : error C2146: syntax error : missing ';' before identifier 'NET_IFTYPE'
microsoft sdks\windows\v6.1\include\ifdef.h(153) : fatal error C1004: unexpected end of file found
点过去是这句:typedef UINT16 NET_IFTYPE,*PNET_IFTYPE;
没错啊。网上类似的问题有说要加头文件的,可不知道加什么头文件。
不知道什么原因?
11 个解决方案
#1
printf("主机%s可达",mac地址为:%s\n,ip,d);这个你怎么写成这样了
#2
太大意了吧。。。
printf("主机%s可达,mac地址为:%s\n“,ip,d);
printf("主机%s可达,mac地址为:%s\n“,ip,d);
#3
谢谢。
但此处改正后问题仍在。
#4
这段代码没有问题,你可以查下是不是别的文件出的问题
#5
uint16实际上就是unsigned short吧?可能头文件有问题,你可以在你的程序里面用最原始的类型来试试。就是不要包含那么多头文件。
#6
你的程序中有非ASCII码字符串。
#7
点过去是这句:typedef UINT16 NET_IFTYPE,*PNET_IFTYPE;
应该是上一行出问题了,你看看,上一行的定义,然后猜测少包含哪个.h了
应该是上一行出问题了,你看看,上一行的定义,然后猜测少包含哪个.h了
#8
这句:typedef UINT16 NET_IFTYPE,*PNET_IFTYPE;是在sdk包中的microsoft sdks\windows\v6.1\include\ifdef.h文件中,不会有错误吧。
#9
我检查了一遍,没找到。
#10
修改以后,把你的代码放在VS2008中编译了一次,可以通过编译,就是运行就崩溃了,好像是野指针问题。。。
#11
UINT16 未定义?
#1
printf("主机%s可达",mac地址为:%s\n,ip,d);这个你怎么写成这样了
#2
太大意了吧。。。
printf("主机%s可达,mac地址为:%s\n“,ip,d);
printf("主机%s可达,mac地址为:%s\n“,ip,d);
#3
谢谢。
但此处改正后问题仍在。
#4
这段代码没有问题,你可以查下是不是别的文件出的问题
#5
uint16实际上就是unsigned short吧?可能头文件有问题,你可以在你的程序里面用最原始的类型来试试。就是不要包含那么多头文件。
#6
你的程序中有非ASCII码字符串。
#7
点过去是这句:typedef UINT16 NET_IFTYPE,*PNET_IFTYPE;
应该是上一行出问题了,你看看,上一行的定义,然后猜测少包含哪个.h了
应该是上一行出问题了,你看看,上一行的定义,然后猜测少包含哪个.h了
#8
这句:typedef UINT16 NET_IFTYPE,*PNET_IFTYPE;是在sdk包中的microsoft sdks\windows\v6.1\include\ifdef.h文件中,不会有错误吧。
#9
我检查了一遍,没找到。
#10
修改以后,把你的代码放在VS2008中编译了一次,可以通过编译,就是运行就崩溃了,好像是野指针问题。。。
#11
UINT16 未定义?