inet_addr()함수는 (점박이 3형제)인터넷 주소 cp를
32bit 바이너리 주소로 변경한값을 리턴한다. 리턴된 값은 네트워크 바이트 오더를
따른다. 만약 잘못된 값을 입력했다면 INADDR_NONE(-1)을 리턴한다.
이 함수는 입력을 제대로 검사할 수 없으므로 가능하면 이 함수보다
inet_aton()을 사용하기 바란다. 왜냐하면 리턴되는 값 -1은 255.255.255.255로 올바른
주소를 나타내기 때문이다. inet_aton()은 에러 체크를 위한 확실한 방법을 제공한다.
inet_aton()함수는 inet_addr()의 보다 최신 버젼이다. inet_aton()은 주어진 인터넷 주소
cp를 변경한 값을 inp에 복사한다. 잘못된
인터넷 주소를 입력했을 경우 0을 리턴한다. 변환값과 리턴값이 분리되어 있으므로
보다 확실한 입력 체크가 가능하다.
inet_network()함수는 인터넷 주소 cp에 대한 호스트 바이트 오더를
따르는 바이너리 주소값을 리턴하는 걸 제외하면 inet_addr()과 동일하다.
inet_ntoa()는 in의 바이너리 인터넷 주소를 점박이 3형제
인터넷 주소로 변경한 다음 되돌려준다. 입력되는 값은 네트워크 바이트 오더를
따라야 한다.
in_addr구조체는 netinet/in.h에 정의되어
있다.
struct in_addr
{
unsigned long int s_addr;
}
1.3. 예제
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdio.h>
int main(int argc, char **argv)
{
char buf[256];
struct in_addr laddr;
int stat;
while(1)
{
// 인터넷 주소를 입력 받는다.
printf("INPUT ADDRESS : ");
fgets(buf, 255, stdin);
buf[strlen(buf) -1] = 0x00;
if (strcmp(buf, "quit") == 0) break;
stat = inet_aton(buf, &laddr);
if (!stat)
{
printf("Format Error\n");
}
else
{
printf("inet_addr : %s => %d\n", buf, laddr.s_addr);
printf("inet_ntoa : %d => %s\n", laddr.s_addr, inet_ntoa(laddr));
}
}
return 0;
}
1장. inet_addr(3)
인터넷 주소를 변환한다.
1.1. 사용법
1.2. 설명
inet_addr()함수는 (점박이 3형제)인터넷 주소 cp를 32bit 바이너리 주소로 변경한값을 리턴한다. 리턴된 값은 네트워크 바이트 오더를 따른다. 만약 잘못된 값을 입력했다면 INADDR_NONE(-1)을 리턴한다. 이 함수는 입력을 제대로 검사할 수 없으므로 가능하면 이 함수보다 inet_aton()을 사용하기 바란다. 왜냐하면 리턴되는 값 -1은 255.255.255.255로 올바른 주소를 나타내기 때문이다. inet_aton()은 에러 체크를 위한 확실한 방법을 제공한다.
inet_aton()함수는 inet_addr()의 보다 최신 버젼이다. inet_aton()은 주어진 인터넷 주소 cp를 변경한 값을 inp에 복사한다. 잘못된 인터넷 주소를 입력했을 경우 0을 리턴한다. 변환값과 리턴값이 분리되어 있으므로 보다 확실한 입력 체크가 가능하다.
inet_network()함수는 인터넷 주소 cp에 대한 호스트 바이트 오더를 따르는 바이너리 주소값을 리턴하는 걸 제외하면 inet_addr()과 동일하다.
inet_ntoa()는 in의 바이너리 인터넷 주소를 점박이 3형제 인터넷 주소로 변경한 다음 되돌려준다. 입력되는 값은 네트워크 바이트 오더를 따라야 한다.
in_addr구조체는 netinet/in.h에 정의되어 있다.
1.3. 예제
1.4. 참고문헌
Endian에 대해서
Socket Layer
Recent Posts
Archive Posts
Tags