利用ioctl获取无线速率

其实对于自己装了网卡驱动的来说,应该从最根本的驱动中获取速率。

但是用ioctl)也可以,其实实现和iwconfig命令相同。

仅仅获取速率这部分:

[cpp] view plain copy
 

#include <stdio.h>  
#include <stdlib.h>  
#include <sys/socket.h>  
#include <string.h>  
#include “wireless_copy.h”  
#define dvname “ath0”  
int get_rateint sock, struct iwreq* wrq,__s32 rate);  
int main)  
{  
    struct iwreq wrq;  
    int sock;  
    char gInterfaceName[16];  
    __s32 rate;  
    memsetgInterfaceName, 0, sizeofgInterfaceName));  
    strcatgInterfaceName,dvname);  
    sock = socketAF_INET, SOCK_DGRAM, 0);  
        if sock < 0)  
        {  
            printf“Error Creating Socket for ioctl/n”);  
            return 0;  
        }  
    memset&wrq, 0, sizeofwrq));  
    strncpywrq.ifr_name, gInterfaceName, IFNAMSIZ);  
    get_ratesock, &wrq,rate);  
    printf“/nrate:%dM/n/n”,wrq.u.bitrate.value/1000000);  
    return 0;  
}  
int get_rateint sock, struct iwreq* wrq,__s32 rate)  
{  
    ifioctlsock, SIOCGIWRATE, wrq) < 0)  
    {  
        perror“Ioctl error”);  
        return0);  
    }  
    return 1;  
}  

其中wireless_copy.h可以从madwifi /tools 文件夹中找到。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注