web-dev-qa-db-ja.com

LinuxのCでIPアドレスを取得するにはどうすればよいですか?

IPアドレスを取得するにはどうすればよいですか(できれば192.168.0.1 フォーマット)?

5
Jelly

このサンプルコードには、両方のインターフェース名がリストされています(例:loまたはeth0)コンピュータに存在するすべてのIPv4ネットワークインターフェイスに対して、現在割り当てられているIPアドレスと一緒に:

getifaddrs(&addrs);
tmp = addrs;

while (tmp) 
{
    if (tmp->ifa_addr && tmp->ifa_addr->sa_family == AF_INET)
    {
        struct sockaddr_in *pAddr = (struct sockaddr_in *)tmp->ifa_addr;
        printf("%s: %s\n", tmp->ifa_name, inet_ntoa(pAddr->sin_addr));
    }

    tmp = tmp->ifa_next;
}

freeifaddrs(addrs);
10
brm

Linuxの場合:

マシンに対してローカルなすべてのインターフェースを取得するには、 getifaddrs() を使用します。

上にリンクされているページの最後に例があります。

7
alk