"If a worker wants to do his job well, he must first sharpen his tools." - Confucius, "The Analects of Confucius. Lu Linggong"
Front page > Programming > How to Get a Local Computer's IP Address and Subnet Mask in C++?

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

Published on 2024-11-15
Browse:308

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

How to Retrieve the IP Address and Subnet Mask of a Local Computer in C

Determining the local computer's IP address and subnet mask is a fundamental requirement for various network operations. In C , there are multiple approaches to obtain these values.

Torial's code provides an effective solution to retrieve both the IP address and subnet mask. It leverages the getifaddrs() function to iterate through all the network interface addresses associated with the local computer.

Here's a slightly improved version of the 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;
}

This updated code ensures both the IP address and subnet mask are correctly identified and printed for each network interface.

Latest tutorial More>

Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.

Copyright© 2022 湘ICP备2022001581号-3