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

本文提供了一个C语言实现的示例程序,用于通过设备名称获取网关地址。该程序利用了Linux系统的路由文件来查找指定设备的网关信息,并使用了inet_ntoa函数将网关地址转换为更易读的形式。
#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结构体所在的头文件

转载于:https://www.cnblogs.com/fogcell/p/7207767.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值