ホームページ >バックエンド開発 >C++ >C でローカル コンピュータの IP アドレスとサブネット マスクを取得する方法

C でローカル コンピュータの IP アドレスとサブネット マスクを取得する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-11-10 03:34:02386ブラウズ

How to Get the Local Computer's IP Address and Subnet Mask in C  ?

C でのローカル コンピューターの IP アドレスとサブネット マスクの決定

ローカル コンピューターの IP アドレスとサブネット マスクの取得は、さまざまなネットワーク操作に不可欠です。 C では、このプロセスはプラットフォーム固有のシステム コールを利用して実行できます。

1. Unix/MacOS

Unix および macOS システムの場合、getifaddrs 関数を使用すると、ネットワーク インターフェイス アドレスのリンク リストを取得できます。このリストを反復処理すると、各インターフェイスの IP アドレス、サブネット マスク、およびその他の関連情報にアクセスできるようになります:

#include <sys/types.h>
#include <ifaddrs.h>

struct ifaddrs *ifaddr;
int s;

if ((s = getifaddrs(&ifaddr)) == -1) {
    // Error handling
}

for (struct ifaddrs *ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) {
    if (ifa->ifa_addr->sa_family == AF_INET) {
        char addr[INET_ADDRSTRLEN];
        inet_ntop(AF_INET, &((struct sockaddr_in *)ifa->ifa_addr)->sin_addr, addr, INET_ADDRSTRLEN);
        printf("IP Address: %s\n", addr);

        char netmask[INET_ADDRSTRLEN];
        inet_ntop(AF_INET, &((struct sockaddr_in *)ifa->ifa_netmask)->sin_addr, netmask, INET_ADDRSTRLEN);
        printf("Subnet Mask: %s\n", netmask);
    }
}

2. Windows

Windows システムの場合、GetAdaptersAddresses 関数は同様の機能を提供します。この関数は、ローカル コンピューター上のすべてのネットワーク アダプターの情報をバッファーに書き込みます。

#include <iphlpapi.h>

PIP_ADAPTER_ADDRESSES addresses;
ULONG outBufLen = 0;
DWORD res = GetAdaptersAddresses(AF_INET, 0, NULL, addresses, &outBufLen);

if (res != ERROR_SUCCESS) {
    // Error handling
}

for (PIP_ADAPTER_ADDRESSES adapter = addresses; adapter != NULL; adapter = adapter->Next) {
    char ip[MAX_PATH + 1];
    InetNtopA(AF_INET, &adapter->FirstUnicastAddress->Address.Ipv4.sin_addr, ip, MAX_PATH + 1);
    printf("IP Address: %s\n", ip);

    char netmask[MAX_PATH + 1];
    InetNtopA(AF_INET, &adapter->FirstUnicastAddress->NetMask.Ipv4.sin_addr, netmask, MAX_PATH + 1);
    printf("Subnet Mask: %s\n", netmask);
}

次の手順に従うと、 C でローカル コンピューターの IP アドレスとサブネット マスクの両方を取得でき、次のことが可能になります。ネットワーク接続を確立し、さまざまな通信操作を効果的に実行します。

以上がC でローカル コンピュータの IP アドレスとサブネット マスクを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。