0
我已经写用于打印关于网络接口信息的代码,例如“姓名”,“地址”,“子网掩码”,“MAC地址”。频道频率数
但我想为为wlan0加上“信道频率”我的代码和打印此信息,但我不知道该怎么办。
这是我的代码:
int wlan(){
struct ifreq ifr;
int sock, j, k;
char *p, addr[32], mask[32], mac[32];
sock=socket(PF_INET, SOCK_STREAM, 0);
if (-1==sock) {
perror("socket() ");
return 1;
}
strncpy(ifr.ifr_name,"wlan0",sizeof(ifr.ifr_name)-1);
ifr.ifr_name[sizeof(ifr.ifr_name)-1]='\0';
if (-1==ioctl(sock, SIOCGIFADDR, &ifr)) {
perror("ioctl(SIOCGIFADDR) ");
return 1;
}
p=inet_ntoa(((struct sockaddr_in *)(&ifr.ifr_addr))->sin_addr);
strncpy(addr,p,sizeof(addr)-1);
addr[sizeof(addr)-1]='\0';
if (-1==ioctl(sock, SIOCGIFNETMASK, &ifr)) {
perror("ioctl(SIOCGIFNETMASK) ");
return 1;
}
p=inet_ntoa(((struct sockaddr_in *)(&ifr.ifr_netmask))->sin_addr);
strncpy(mask,p,sizeof(mask)-1);
mask[sizeof(mask)-1]='\0';
if (-1==ioctl(sock, SIOCGIFHWADDR, &ifr)) {
perror("ioctl(SIOCGIFHWADDR) ");
return 1;
}
for (j=0, k=0; j<6; j++) {
k+=snprintf(mac+k, sizeof(mac)-k-1, j ? ":%02X" : "%02X",
(int)(unsigned int)(unsigned char)ifr.ifr_hwaddr.sa_data[j]);
}
mac[sizeof(mac)-1]='\0';
printf("\n");
printf("name: %s\n",ifr.ifr_name);
printf("address: %s\n",addr);
printf("netmask: %s\n",mask);
printf("macaddr: %s\n",mac);
printf("\n");
close(sock);
return 0;
}
你想知道接口支持当前正在使用的通道,或频道列表?你可以通过运行'iwlist frequency'来看到相关信息吗? –
我可以通过在linux终端中使用Iwlist来查看此通道号。 – user2836634
'iwconfig wlan0'显示什么?你想要的信息在那里? –