■ 네트워크 바이트 순서(Big Endian) 과 Dotted-Decimal Notation 간의 상호 변환 함수

(1) 네트워크 주소 변환
: sockaddr_in 구조체의 주소멤버의 데이터 타입은 unsigned long 이다.
  따라서 IP 주소를 할당하기 위해 십진수 표현방식(Dotted-Decimal Notation)간에 변환 함수를 적절히 사용해야 한다.
  => inet_addr()는 Dotted-Decimal Notation의 주소값을 unsigned long 타입으로 변환 및 네트워크 바이트 순서로의 변환한다.


(2) inet_addr() 함수 : Dotted-Decimal Notation을 Big-Endian 32비트 값으로 변환

● 함수원형 : unsigned long inet_addr(const char *string)
● 리턴 값 : 성공 시 = Big Endian 32비트 값
                 실패 시 = INADDR_NONE

< Source >


< Compile & Result >


- 192.168.1.102 의 Unsigned long 타입 Big-Endian 32비트 값은 "6601a8c0" 이다.
- 192.168.1.256 으로 잘못된 값을 입력 했을 때의 결과도 확인 할 수 있다.

by Latte 하늘이도우사 2012. 2. 29. 14:11
  • 질문 2016.09.29 15:07 ADDR EDIT/DEL REPLY

    255.255.255.255 입력시 inet_addr(argv[1])에서 -1 반환하게 되는데 255.255.255.255는 어떻게 ffffffff로 출력하게 하나요?