나는 안드로이드에서 네이티브 응용 프로그램을 코딩하고 있으며 응용 프로그램에서 장치의 기본 게이트웨이를 가져와야합니다. 다음은 현재 게이트웨이에서 기본 게이트웨이를 가져 오는 코드입니다.안드로이드 전화의 기본 게이트웨이 검색
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에서 작동합니까? 나는 그것이 생체 공학에 포함되지 않은 어딘가를 읽었다.
기본 게이트웨이를 가져 오는 다른 방법이 있습니까? 나는 그것을 java가 아닌 C로 작성해야한다.
고맙습니다.
감사합니다. grep과 awk가 문제라고 생각합니다. – kuchi
모든 Android 장치가 -r을 지원하는 netstat 구현을 가지고있는 것은 아닙니다. – bleater