C에서 로컬 IP 주소 및 서브넷 마스크 검색
네트워크 프로그래밍 영역에서는 IP 주소와 서브넷을 결정해야 하는 경우가 많습니다. 로컬 컴퓨터의 마스크. 이 정보는 로컬 네트워크에서 메시지를 보내는 등 다양한 목적으로 사용될 수 있습니다.
로컬 IP 주소와 서브넷 마스크를 검색하는 작업은 간단해 보일 수 있지만 처음에 보이는 것보다 까다로울 수 있습니다. 많은 컴퓨터에는 서로 다른 네트워크 인터페이스에 여러 IP 주소가 할당되어 있을 수 있습니다. 따라서 특정 네트워크 컨텍스트와 관련된 IP 주소를 이해하는 것이 중요합니다.
어떤 경우에는 프로그램이 통신하는 원격 컴퓨터에서 IP 주소를 요청하는 것이 더 유리할 수 있습니다. 이 접근 방식을 사용하면 특정 컴퓨터에 표시되는 IP 주소를 확인하여 연결 맥락에서 관련성을 보장할 수 있습니다.
Unix/Mac 구현
Unix 및 Mac 시스템에서는 getifaddrs() 함수를 사용하여 로컬 시스템과 관련된 모든 IP 주소 목록을 검색하는 데 권장되는 접근 방식입니다. 다음은 예제 코드 조각입니다.
#include <ifaddrs.h> void GetNetworkInterfaceInfos() { struct ifaddrs *ifaddr; int status = getifaddrs(&ifaddr); if (status != 0) { // Error handling } for (struct ifaddrs *ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) { if (ifa->ifa_addr == NULL) { continue; } if (ifa->ifa_addr->sa_family == AF_INET) { // IPv4 address struct sockaddr_in *in = (struct sockaddr_in *)ifa->ifa_addr; printf("IP address: %s\n", inet_ntoa(in->sin_addr)); // Get subnet mask if available if (ifa->ifa_netmask != NULL) { struct sockaddr_in *mask = (struct sockaddr_in *)ifa->ifa_netmask; printf("Subnet mask: %s\n", inet_ntoa(mask->sin_addr)); } } else if (ifa->ifa_addr->sa_family == AF_INET6) { // IPv6 address // Handle IPv6 addresses here } } freeifaddrs(ifaddr); }
Windows 구현
Windows에서는 GetAdaptersAddresses() 함수를 사용하여 유사한 기능을 구현할 수 있습니다.
#include <iphlpapi.h> void GetNetworkInterfaceInfos() { PIP_ADAPTER_ADDRESSES adapter_addresses; ULONG size = 0; GetAdaptersAddresses(AF_UNSPEC, 0, NULL, adapter_addresses, &size); adapter_addresses = (PIP_ADAPTER_ADDRESSES)HeapAlloc(GetProcessHeap(), 0, size); GetAdaptersAddresses(AF_UNSPEC, 0, NULL, adapter_addresses, &size); for (PIP_ADAPTER_ADDRESSES adapter = adapter_addresses; adapter; adapter = adapter->Next) { printf("IP address: %s\n", adapter->IpAddressList.IpAddress.String); // Get subnet mask if available if (adapter->SubnetMaskList.IpAddress.String) { printf("Subnet mask: %s\n", adapter->SubnetMaskList.IpAddress.String); } } HeapFree(GetProcessHeap(), 0, adapter_addresses); }
추가 고려 사항
여러 IP 주소를 처리할 때 특정 요구 사항에 적합한 IP 주소를 고려하는 것이 중요합니다. 이 결정은 프로그램의 상황과 네트워크 구성에 따라 달라집니다. 로컬 IP 주소 검색의 미묘한 차이를 이해하면 다양한 네트워킹 애플리케이션에 이 정보를 효과적으로 활용할 수 있습니다.
위 내용은 C에서 로컬 IP 주소와 서브넷 마스크를 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!