inet_addr은 IPv4 전용이고, 리턴 타입이 in_addr_t인데 uint32_t 와 동일합니다.
inet_pton은 IPv4, IPv6 모두에 대해서 사용이 가능합니다.
inet_pton의 dst 파리미터는 IPv4일 때는 sin_addr.sin_addr의 포인터이고, IPv6일 때는 sin_addr.sin6_addr의 포인터입니다. 둘 모두를 쓰기 위해 그렇게 되었다고 봐야겠죠.
IPv4용은 다음과 같고
struct sockaddr_in {shortint sin_family;// Address family, AF_INETunsignedshortint sin_port;// Port numberstruct in_addr sin_addr;// Internet addressunsignedchar sin_zero[8];// Same size as struct sockaddr};// Internet address (a structure for historical reasons)struct in_addr {uint32_t s_addr;// that's a 32-bit int (4 bytes)};
inet_addr은 IPv4 전용이고, 리턴 타입이
inet_addr은 IPv4 전용이고, 리턴 타입이 in_addr_t인데 uint32_t 와 동일합니다.
inet_pton은 IPv4, IPv6 모두에 대해서 사용이 가능합니다.
inet_pton의 dst 파리미터는 IPv4일 때는 sin_addr.sin_addr의 포인터이고, IPv6일 때는 sin_addr.sin6_addr의 포인터입니다. 둘 모두를 쓰기 위해 그렇게 되었다고 봐야겠죠.
IPv4용은 다음과 같고
IPv6용은 다음과 같고
https://www.joinc.co.kr/w/Site/TCP_IP/IPv6/IPv6Prog
그리고, inet_addr은 255.255.255.255 주소에 대한 리턴값이 INADDR_NONE(-1)과 동일하여 에러인지 255.255.255.255를 변환한 값인지 구분할 수 없는 문제가 있습니다.
Signature :) - "여유를 갖고 행동하되 게을러지지 말자"
댓글 달기