首页 > 其他 > 详细

获取IPRouter信息,出口默认网关。

时间:2017-07-19 21:09:31      阅读:274      评论:0      收藏:0      [点我收藏+]
#define ROUTE_FILE_NAME "/proc/net/route"

/*

Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT

wan1 00000000 5692550A 0003 0 0 0 00000000 0 0 0

wan1 0000000A 00000000 0001 0 0 0 000000FF 0 0 0

br0 0022A8C0 00000000 0001 0 0 0 00FFFFFF 0 0 0

×/

int getGatewayByDevName(const char *devName, char *outText){
    
    outText[0] = \0;
    
    char buffer[BIG_MAX_FIELD_LEN];
    char destination[NORMAL_FIELD_LEN];
    unsigned long gateway;
    
    FILE* f = fopen(ROUTE_FILE_NAME, "r");
    
    if(!f){
        return 1;
    }
    int devNamelen = strlen(devName);
    while(fgets(buffer, sizeof(buffer)-1, f)){
        if(!strncmp(buffer, devName, devNamelen)){
            sscanf(buffer, "%*s%s%lX", destination, &gateway);
            if(!strncmp(destination, "00000000", 8)){
                if (gateway != 0) {
                    sprintf(outText, "%s", inet_ntoa(*(struct in_addr*)&gateway));
                    break;
                }
            }
        }
    }
    
    fclose(f);
    
    return 0;
}

具体的头文件要包含

inet_ntoa结构体所在的头文件

获取IPRouter信息,出口默认网关。

原文:http://www.cnblogs.com/fogcell/p/7207767.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!