-
Notifications
You must be signed in to change notification settings - Fork 0
Study : CPP : inet_addr
Jiwon-Woo edited this page Mar 31, 2022
·
3 revisions
항목 | 내용 |
---|---|
일자 | 2022.03.31 |
작성자 | jwoo |
제목 | webserv 허용함수 - inet_addr
|
한줄요약 | IP 주소를 network byte order를 따르는 네트워크 주소로 변경하는 함수 |
inet_addr
NAME
Internet address manipulation routines
SYNOPSIS
#include <arpa/inet.h>
in_addr_t inet_addr(const char *cp);
// typedef __uint32_t in_addr_t;
// typedef unsigned int __uint32_t;
DESCRIPTION
inet_addr() 함수는 인자로 받은 문자열 cp를 인터넷 주소로 사용하기에 적합한 32비트 정수형으로 변환합니다. 이때 cp는 IPv4 dotted decimal notation(점으로 구분된 표기법)을 따르는 문자열이며, 반환값은 network byte order 방식을 따릅니다. 만약 유효하지 않은 값이 입력되었다면, INADDR_NONE(일반적으로 -1)이 반환된다.
IPv4 dotted decimal notation 사용하여 지정된 값은 다음 형식 중 하나를 사용합니다.
form | description |
---|---|
a.b.c.d | 점으로 구분된 4개의 부분은 각각 byte 단위로 해석되고, 왼쪽에서 오른쪽 순서로 인터넷 주소(4바이트)에 할당됩니다. |
a.b.c | 세 부분으로 구분된 주소가 지정되면, 마지막 부분은 8비트가 아닌 16비트로 해석되어 네크워트 주소의 맨 오른쪽 2바이트에 배치됩니다. 이렇게 하면 "128.net.host" 과 같은 class B 네트워크 주소를 표시하기 용이합니다. |
a.b | 두 부분으로 된 주소가 제공되면, 마지막 부분은 24비트로 해석되어 네트워크 주소의 맨 오른쪽 3바이트에 배치됩니다. |
a | 한 부분만 주어지면 값은 바이트의 재배치 없이 네트워크 주소에 직접 저장됩니다. |
RETURN VALUES
성공적으로 완료되면 inet_addr()은 인터넷 주소를 반환합니다. 그렇지 않으면 (in_addr_t)(-1)을 반환합니다.
BUGS
INADDR_NONE(0xffffffff) 값은 유효한 브로드캐스트 주소이지만, inet_addr()이 해당 값을 반환하는 경우 무조건 실패로 간주합니다.
// uploaded 220331