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

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

Susan Sarandon
Susan Sarandon원래의
2024-11-10 03:34:02346검색

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

C에서 로컬 컴퓨터의 IP 주소와 서브넷 마스크 확인

로컬 컴퓨터의 IP 주소와 서브넷 마스크를 얻는 것은 다양한 네트워킹 작업에 필수적입니다. C에서는 플랫폼별 시스템 호출을 활용하여 이 프로세스를 수행할 수 있습니다.

1. Unix/MacOS

Unix 및 macOS 시스템의 경우 getifaddrs 함수를 사용하면 네트워크 인터페이스 주소의 연결된 목록을 검색할 수 있습니다. 이 목록을 반복하면 각 인터페이스의 IP 주소, 서브넷 마스크 및 기타 관련 정보에 액세스할 수 있습니다.

#include <sys/types.h>
#include <ifaddrs.h>

struct ifaddrs *ifaddr;
int s;

if ((s = getifaddrs(&ifaddr)) == -1) {
    // Error handling
}

for (struct ifaddrs *ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) {
    if (ifa->ifa_addr->sa_family == AF_INET) {
        char addr[INET_ADDRSTRLEN];
        inet_ntop(AF_INET, &((struct sockaddr_in *)ifa->ifa_addr)->sin_addr, addr, INET_ADDRSTRLEN);
        printf("IP Address: %s\n", addr);

        char netmask[INET_ADDRSTRLEN];
        inet_ntop(AF_INET, &((struct sockaddr_in *)ifa->ifa_netmask)->sin_addr, netmask, INET_ADDRSTRLEN);
        printf("Subnet Mask: %s\n", netmask);
    }
}

2. Windows

Windows 시스템의 경우 GetAdaptersAddresses 함수는 유사한 기능을 제공합니다. 이 기능은 로컬 컴퓨터의 모든 네트워크 어댑터에 대한 정보로 버퍼를 채웁니다.

#include <iphlpapi.h>

PIP_ADAPTER_ADDRESSES addresses;
ULONG outBufLen = 0;
DWORD res = GetAdaptersAddresses(AF_INET, 0, NULL, addresses, &outBufLen);

if (res != ERROR_SUCCESS) {
    // Error handling
}

for (PIP_ADAPTER_ADDRESSES adapter = addresses; adapter != NULL; adapter = adapter->Next) {
    char ip[MAX_PATH + 1];
    InetNtopA(AF_INET, &adapter->FirstUnicastAddress->Address.Ipv4.sin_addr, ip, MAX_PATH + 1);
    printf("IP Address: %s\n", ip);

    char netmask[MAX_PATH + 1];
    InetNtopA(AF_INET, &adapter->FirstUnicastAddress->NetMask.Ipv4.sin_addr, netmask, MAX_PATH + 1);
    printf("Subnet Mask: %s\n", netmask);
}

이 단계를 수행하면 C에서 로컬 컴퓨터의 IP 주소와 서브넷 마스크를 모두 검색할 수 있습니다. 네트워크 연결을 구축하고 다양한 통신 작업을 효과적으로 수행합니다.

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

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