"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como obter o endereço IP e a máscara de sub-rede de um computador local em C++?

Como obter o endereço IP e a máscara de sub-rede de um computador local em C++?

Publicado em 15/11/2024
Navegar:295

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

Como recuperar o endereço IP e a máscara de sub-rede de um computador local em C

Determinar o endereço IP e a máscara de sub-rede do computador local é uma requisito fundamental para várias operações de rede. Em C, existem várias abordagens para obter esses valores.

O código de Torial fornece uma solução eficaz para recuperar o endereço IP e a máscara de sub-rede. Ele aproveita a função getifaddrs() para iterar por todos os endereços de interface de rede associados ao computador local.

Aqui está uma versão ligeiramente melhorada do código:

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

Este código atualizado garante que o endereço IP e a máscara de sub-rede sejam corretamente identificados e impressos para cada interface de rede.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3