Heim >Backend-Entwicklung >C++ >Wie erhalte ich die IP-Adresse und Subnetzmaske des lokalen Computers in C?

Wie erhalte ich die IP-Adresse und Subnetzmaske des lokalen Computers in C?

Susan Sarandon
Susan SarandonOriginal
2024-11-10 03:34:02352Durchsuche

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

Bestimmen der IP-Adresse und Subnetzmaske des lokalen Computers in C

Das Ermitteln der IP-Adresse und Subnetzmaske des lokalen Computers ist für verschiedene Netzwerkvorgänge unerlässlich. In C kann dieser Prozess durch die Nutzung plattformspezifischer Systemaufrufe erreicht werden.

1. Unix/MacOS

Für Unix- und macOS-Systeme ermöglicht die getifaddrs-Funktion den Abruf einer verknüpften Liste von Netzwerkschnittstellenadressen. Das Durchlaufen dieser Liste ermöglicht den Zugriff auf die IP-Adresse, die Subnetzmaske und andere zugehörige Informationen jeder Schnittstelle:

#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

Für Windows-Systeme bietet die Funktion „GetAdaptersAddresses“ eine ähnliche Funktionalität. Diese Funktion füllt einen Puffer mit Informationen für alle Netzwerkadapter auf dem lokalen Computer:

#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);
}

Durch Befolgen dieser Schritte können Sie sowohl die IP-Adresse als auch die Subnetzmaske für den lokalen Computer in C abrufen und so Folgendes tun Netzwerkverbindungen herstellen und verschiedene Kommunikationsvorgänge effektiv durchführen.

Das obige ist der detaillierte Inhalt vonWie erhalte ich die IP-Adresse und Subnetzmaske des lokalen Computers in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn