#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메소드를 이용하여 변환하는 것이 요즘은 권장된다고 합니다.
'프로그래밍 > 2024 네트워크 프로그래밍' 카테고리의 다른 글
7. read를 사용한 에코 클라이언트 최적화 (0) | 2025.01.08 |
---|---|
6. Address conversion (0) | 2025.01.06 |
4. 빅 엔디안, 리틀 엔디안 (0) | 2025.01.06 |
3. c에서의 파일복사 (0) | 2025.01.03 |
2. 파일 디스크립터에서 파일 열기/읽기/쓰기/닫기 (1) | 2025.01.03 |