>  기사  >  백엔드 개발  >  C에서 로컬 컴퓨터의 IP 주소와 서브넷 마스크를 얻는 방법은 무엇입니까?

C에서 로컬 컴퓨터의 IP 주소와 서브넷 마스크를 얻는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-11 15:54:03698검색

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

C에서 로컬 컴퓨터의 IP 주소와 서브넷 마스크를 검색하는 방법

로컬 컴퓨터의 IP 주소와 서브넷 마스크를 확인하는 것은 다양한 네트워크 운영을 위한 기본 요구 사항. C에는 이러한 값을 얻는 여러 가지 접근 방식이 있습니다.

Torial의 코드는 IP 주소와 서브넷 마스크를 모두 검색하는 효과적인 솔루션을 제공합니다. getifaddrs() 함수를 활용하여 로컬 컴퓨터와 연결된 모든 네트워크 인터페이스 주소를 반복합니다.

다음은 약간 향상된 코드 버전입니다.

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

이 업데이트된 코드는 두 가지 모두를 보장합니다. 각 네트워크 인터페이스에 대해 IP 주소와 서브넷 마스크가 올바르게 식별되고 인쇄됩니다.

위 내용은 C에서 로컬 컴퓨터의 IP 주소와 서브넷 마스크를 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.