Как установить статический ip в Android P (используйте C или C ++)? - PullRequest
0 голосов
/ 22 мая 2019

все,

Я разрабатываю фреймворк для Android.

Теперь я пытаюсь скомпилировать бинарный файл в / vendor / bin, для этого файла нужна функция: установить статический бинарный файл ip.my isзапустить в корне, поэтому он не может вызвать команду ifconfig.

Я пробую этот код в своем коде, и эта часть уже пробовала на платформе Linux, она работает хорошо.но не может работать на Android.

кто-нибудь может мне помочь?

int setIPAddress( char *IPAddress ) {
    struct ifreq ifr;
    int so;

    if ((so = socket(PF_PACKET, SOCK_RAW, 0)) < 0) {
        return -1;
    }

    strcpy(ifr.ifr_name,"eth0");

    bzero (&(ifr.ifr_addr), sizeof (struct sockaddr_in));
    ((struct sockaddr_in *) &ifr.ifr_addr)->sin_family = AF_INET;
    ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr.s_addr = inet_addr(IPAddress);
    if(ioctl(so,SIOCSIFADDR,&ifr) < 0) {
        close(so);
        return -1;
    }

    if (ioctl(so, SIOCGIFFLAGS, &ifr) < 0) {
        close(so);
        return -1;
    }
    ifr.ifr_ifru.ifru_flags = ifr.ifr_ifru.ifru_flags | IFF_UP;
    if (ioctl(so, SIOCSIFFLAGS, &ifr) < 0) {
        close(so);
        return -1;
    }

    close(so);
    printf("setIPAddress %s OK!\n",IPAddress);
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...