以可读格式打印sockaddr ap_addr(网络的MAC地址)

时间:2013-07-28 12:01:05

标签: c linux

我在无线路由器上运行此命令:

#: iwlist wlan00 scanning
wlan0    Scan completed :
          Cell 01 - Address: 16:76:02:7D:A5:25
          .....

所以提到的“地址”是否检测到接入点的MAC地址?

我查看 iwlib.h ap_addr 的类型为 sockaddr

当我第一次尝试将其打印为%d 时,它给了我类似于71654的输出,所以我认为它的格式可能不正确。

我还尝试使用此答案作为指南打印信息:https://stackoverflow.com/a/11684101/1306468

但是我收到了这个错误:

error: 'sockaddr' has no member named 'sa_len'

我也尝试过您的信息 printf("%d\n", result->ap_addr.sa_family);在所有检测到的接入点中输出1作为输出。

任何人都知道如何打印出这个值,所以它与 iwlist wlan0扫描地址的格式相同?

非常感谢。

2 个答案:

答案 0 :(得分:0)

代码我发现看起来更像是这样:

printf ("Target hardware (MAC) address: ");
for (i=0; i<5; i++) {
  printf ("%02x:", arpheader->target_mac[i]);
}

答案 1 :(得分:0)

'fff ...'是因为顶部位已设置,它被解释为符号位并扩展为填充unsigned int。 (注意f显示在9D,FE和D0上,所有这些都设置了80位)

您的解决方案有效,或者将参数转换为unsigned char也应该有效。