0
我在android中编写本机应用程序,我需要在我的应用程序中获取设备的默认网关。这是我现在的代码来获取默认网关。检索Android手机的默认网关
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。
谢谢
谢谢我相信grep和awk是问题所在。 – kuchi
请注意,并非所有的Android设备都支持-r的netstat实现。 – bleater