memset(&iaddr,0,sizeof(struct in_addr)); iaddr.s_addr = pIpHdr->daddr; strcpy(DestIp,inet_ntoa(iaddr));
这里可以把IP地址取出来,且能进行转换!
可我如何得到MAC地址,
如:pEthHdr->h_source;这个值我怎么也得不到的;
h_source是这样定义的 unsigned char h_source[6];
可我跟进去看了一下内存,得到的值h_source[0] 0 h_source[1] 88 h_source[2] 123
……
看到的是那些值,如何取出来!
帮忙哦!
这里可以把IP地址取出来,且能进行转换!
可我如何得到MAC地址,
如:pEthHdr->h_source;这个值我怎么也得不到的;
h_source是这样定义的 unsigned char h_source[6];
可我跟进去看了一下内存,得到的值h_source[0] 0 h_source[1] 88 h_source[2] 123
……
看到的是那些值,如何取出来!
帮忙哦!
szMacAddr[pos] = (temp >9) ? (temp + 55) : (temp + 48);
pos ++; temp = pEthHdr->h_source[i] % 16;
szMacAddr[pos] = (temp >9) ? (temp + 55) : (temp + 48);
pos++;
}
// szMacAddr中存放的是Mac地址的字符串表达方式
能解释一下上面的程序吗?具体如何操作的?
为何要判断 temp>9呢?还有+55和+48
char buf[128];
if ( strstr(buf, "Physical Address") )
{
if ( sscanf(strchr(buf,':')+2, "%02x-%02x-%02x-%02x-%02x-%02x",
&mac[0],
&mac[1], &mac[2], &mac[3], &mac[4], &mac[5]) < 6 )
{
fprintf( stderr, "error in Physical Address line <%s>\n", buf );
ret = -1;
}