首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >取回android手机默认网关

取回android手机默认网关
EN

Stack Overflow用户
提问于 2011-11-21 14:29:25
回答 1查看 1.4K关注 0票数 0

我正在用android编写一个本机应用程序,我需要在我的应用程序上获取设备的默认网关。下面是我获取默认网关的当前代码。

代码语言:javascript
复制
static int get_default_gateway(char *def_gateway, int buf_size)
{
    FILE* pipe;
    char buffer[128];
    char result[2049];

    char cmd[] = "netstat -r | grep ^default | awk '{print $2}'";

    pipe = popen(cmd, "r");
    if (!pipe) return 1;

    memset(result, 0, sizeof(result));

    while(!feof(pipe)) {
        memset(buffer, 0, sizeof(buffer));
        if(fgets(buffer, 128, pipe) != NULL)
        {
              strcat(result, buffer);
        }       
    }
    pclose(pipe);

    memset(def_gateway, 0, buf_size);
    strncpy (def_gateway, result, buf_size );

    return 0;
}

它可以在我的LG p500上运行,但在一些设备上它不会返回任何东西。

我的问题是: popen()能在android上工作吗?我在某处读到它没有包含在仿生学中。

还有没有其他方法来获取默认网关?我需要用C编写,而不是java。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-21 20:08:31

是的,popen()可能在任何Android上都可以工作。但不幸的是grep和awk -不是。看看/proc/net/route - line,其中Destination equals to 00000000是您的默认网关。也许你可以使用NETLINK_ROUTE套接字,尽管我从来没有用过它,也不能说更多。

另请参见this related question

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8208074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档