C でローカル コンピューターの IP アドレスとサブネット マスクを取得する方法
ローカル コンピューターの IP アドレスとサブネット マスクを決定することは、さまざまなネットワーク運用の基本的な要件。 C では、これらの値を取得する方法が複数あります。
torial のコードは、IP アドレスとサブネット マスクの両方を取得する効果的なソリューションを提供します。 getifaddrs() 関数を利用して、ローカル コンピューターに関連付けられたすべてのネットワーク インターフェイス アドレスを反復処理します。
コードのわずかに改良されたバージョンを次に示します。
#include <ifaddrs.h> #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { struct ifaddrs *ifaddr; int err; if ((err = getifaddrs(&ifaddr)) != 0) { perror("getifaddrs"); exit(EXIT_FAILURE); } for (struct ifaddrs *ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) { if (!ifa->ifa_addr) continue; // Print the IP address if (ifa->ifa_addr->sa_family == AF_INET) { char ip[INET_ADDRSTRLEN]; inet_ntop(AF_INET, &((struct sockaddr_in *)ifa->ifa_addr)->sin_addr, ip, INET_ADDRSTRLEN); printf("IP: %s\n", ip); } // Print the subnet mask if (ifa->ifa_netmask->sa_family == AF_INET) { char mask[INET_ADDRSTRLEN]; inet_ntop(AF_INET, &((struct sockaddr_in *)ifa->ifa_netmask)->sin_addr, mask, INET_ADDRSTRLEN); printf("Subnet Mask: %s\n", mask); } } freeifaddrs(ifaddr); return 0; }
この更新されたコードでは、両方の機能が保証されます。 IP アドレスとサブネット マスクがネットワーク インターフェイスごとに正しく識別され、出力されます。
以上がC でローカル コンピュータの IP アドレスとサブネット マスクを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。