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() はアンドロイドで動作しますか? バイオニックには含まれていないとどこかで読みました。
デフォルトゲートウェイを取得する他の方法はありますか? JavaではなくCで書く必要があります。
ありがとうございました