Home  >  Article  >  Backend Development  >  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 ?

Barbara Streisand
Barbara StreisandOriginal
2024-11-11 15:54:03698browse

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

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

The above is the detailed content of How to Get a Local Computer's IP Address and Subnet Mask in C ?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn