"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment obtenir l'adresse IP et le masque de sous-réseau d'un ordinateur local en C++ ?

Comment obtenir l'adresse IP et le masque de sous-réseau d'un ordinateur local en C++ ?

Publié le 2024-11-15
Parcourir:164

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

Comment récupérer l'adresse IP et le masque de sous-réseau d'un ordinateur local en C

Déterminer l'adresse IP et le masque de sous-réseau de l'ordinateur local est un exigence fondamentale pour diverses opérations de réseau. En C , il existe plusieurs approches pour obtenir ces valeurs.

Le code de Torial fournit une solution efficace pour récupérer à la fois l'adresse IP et le masque de sous-réseau. Il exploite la fonction getifaddrs() pour parcourir toutes les adresses d'interface réseau associées à l'ordinateur local.

Voici une version légèrement améliorée du code :

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

Ce code mis à jour garantit que l'adresse IP et le masque de sous-réseau sont correctement identifiés et imprimés pour chaque interface réseau.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3