C でローカル コンピューターの IP アドレスとサブネット マスクを取得する方法
ローカル コンピューターの IP アドレスとサブネット マスクを決定するのは、さまざまなネットワーク運用の基本的な要件。 C では、これらの値を取得する方法が複数あります。
Torial のコードは、IP アドレスとサブネット マスクの両方を取得する効果的なソリューションを提供します。 getifaddrs() 関数を利用して、ローカル コンピューターに関連付けられたすべてのネットワーク インターフェイス アドレスを反復処理します。
コードのわずかに改良されたバージョンを次に示します:
#include#include #include #include 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 アドレスとサブネット マスクの両方がネットワーク インターフェイスごとに正しく識別され、出力されるようになります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3