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

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

Barbara Streisand
Barbara StreisandOriginal
2024-11-11 15:54:03747Durchsuche

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

So rufen Sie die IP-Adresse und Subnetzmaske eines lokalen Computers in C ab

Das Ermitteln der IP-Adresse und Subnetzmaske des lokalen Computers ist ein Grundvoraussetzung für verschiedene Netzwerkoperationen. In C gibt es mehrere Ansätze, diese Werte zu erhalten.

Der Code von Torial bietet eine effektive Lösung zum Abrufen sowohl der IP-Adresse als auch der Subnetzmaske. Es nutzt die Funktion getifaddrs(), um alle Netzwerkschnittstellenadressen zu durchlaufen, die dem lokalen Computer zugeordnet sind.

Hier ist eine leicht verbesserte Version des Codes:

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

Dieser aktualisierte Code gewährleistet beides Die IP-Adresse und die Subnetzmaske werden für jede Netzwerkschnittstelle korrekt identifiziert und gedruckt.

Das obige ist der detaillierte Inhalt vonWie erhalte ich die IP-Adresse und Subnetzmaske eines 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