프로그래밍/2024 네트워크 프로그래밍

5. inet_addr 살펴보기

데일리 백수 2025. 1. 6. 19:19

 

#include <stdio.h> 
#include <arpa/inet.h> 
 
int main(int argc, char *argv[]) 
{ 
 int i; 
 char *strIpAddress[] = {"203.246.75.31", "1.2.3.256", "255.255.255.255", NULL}; 
 in_addr_t nboIpAddress; 
 
 for(i=0; strIpAddress[i]; i++) { 
  	if((nboIpAddress = inet_addr(strIpAddress[i])) == INADDR_NONE) 
   		printf("Error occured for %s\n", strIpAddress[i]); 
  	else 
   		printf("Network byte ordered value for %s: %#08x\n", strIpAddress[i], nboIpAddress); 
 } 
 
 	return 0; 
}

 

[실습 3-3] inet_addr() test

반복문에서 사용할 I 변수와 문자열(주소)를 가지고 있는 문자열 배열을 생성합니다.

또한 네트워크 주소를 저장할 변수도 선언합니다.

 

위에 선언한 배열을 탐색합니다. 각요소를 inet_addr을 통해 문자열을 네트워크 바이트 주소로 변환시키고, 그 값을 검사하여 이상이 없을 경우 매칭되는 변환된 값을 출력하고 올바르지 않은 주소 값일 경우 에러가 발생한 문자열을 출력합니다.

 

다음은 실행 결과입니다. 여기서 특이한점은 255.255.255.255가 오류라는 점인데 이 값은 브로드 캐스트 주소로 사용되기 때문에 올바른 주소가 아니라는 점입니다. 이는 변환 실패로 간주되어 코드에서는 에러로 인식됩니다. 이 때문에 inet_addr이 아닌 inet_pton메소드를 이용하여 변환하는 것이 요즘은 권장된다고 합니다.