출처 : http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/3/inet_addr
참고로...인텔계열의 CPU의 host byte order는 network byte order 와 반대라고 한다.
inet_addr / inet_aton / inet_ntoa / inet_network
#include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> in_addr_t inet_addr(const char *cp); int inet_aton(const char *cp, struct in_addr *inp); in_addr_t inet_network(const char *cp); char *inet_ntoa(struct in_addr in); |
[1] inet_addr()
(점박이 3형제?) 인터넷 주소 cp를 32bit 바이너리 주소로 변경한값을 리턴한다. 리턴된 값은 네트워크 바이트 오더를 따른다. 만약 잘못된 값을 입력했다면 INADDR_NONE(-1)을 리턴한다.
이 함수는 입력을 제대로 검사할 수 없으므로 가능하면 이 함수보다 inet_aton()을 사용하기 바란다.
왜냐하면 리턴되는 값 -1은 255.255.255.255로 올바른 주소를 나타내기 때문이다. inet_aton()은 에러 체크를 위한 확실한 방법을 제공한다.
[2] inet_aton()
inet_aton()함수는 inet_addr()의 보다 최신 버젼이다. inet_aton()은 주어진 인터넷 주소 cp를 변경한 값을 inp에 복사한다. 잘못된 인터넷 주소를 입력했을 경우 0을 리턴한다. 변환값과 리턴값이 분리되어 있으므로 보다 확실한 입력 체크가 가능하다.
[3] inet_network()
inet_network()함수는 인터넷 주소 cp에 대한 호스트 바이트 오더를 따르는 바이너리 주소값을 리턴하는 걸 제외하면 inet_addr()과 동일하다.
[4] inet_ntoa()
inet_ntoa()는 in의 바이너리 인터넷 주소를 점박이 3형제 인터넷 주소로 변경한 다음 되돌려준다. 입력되는 값은 네트워크 바이트 오더를 따라야 한다.
in_addr구조체는 netinet/in.h에 정의되어 있다.
struct in_addr { unsigned long int s_addr; } |
'네트워크' 카테고리의 다른 글
윈도우 네트워크 프로그래밍 (0) | 2010.12.28 |
---|---|
libnet 라이브러리 (0) | 2010.08.20 |
iphdr 구조체와 in_addr 구조체 (0) | 2010.07.08 |
libpcap 라이브러리 API 정리 (0) | 2010.06.24 |
Libpcap (Pcap) 라이브러리 (0) | 2010.06.23 |
RAW 소켓을 하면서...[ ping 프로그램 ( icmp 프로토콜) ] (0) | 2010.03.29 |
Looping(뻉뺑이) - ? (0) | 2010.01.22 |
브리지와 스위치의 차이점 (0) | 2010.01.22 |
libpcap : 패킷 캡쳐 라이브러리 / libnet : 패킷 생성 라이브러리 (0) | 2009.12.03 |
네트워크/프토토콜/LAN,MAN,WAN / TCP/IP /DNS /ping,tracert / dhcp/ 라우터 랜카드,..백본...등등 (0) | 2009.05.05 |