inet_addr(3)

#include <arpa/inet.h>

in_addr_t inet_addr(const char *cp);

inet_addr(3) 함수는 "a.b.c.d" 형태의 IPv4 주소 체계를 network byte order의 binary 주소로 변환한다.
이 함수는 socket address family가 AF_INET type인 경우에 사용하며 struct sockaddr_in 구조체의 멤버 변수인 sin.sin_addr의 값을 설정할 때에 사용한다. 

 

 

파라미터

cp : "a.b.c.d" 형태인 IPv4 주소 체계값. 
  
   ex).
   "127.0.0.1"
   "210.128.6.8" 
   과 같은 numbers-and-dots notation.

 

RETURN

INADDR_NONE 또는 -1
  - 오류가 발생하였으며, 오류 내용은 알 수 없다. (주소가 숫자가 아니거나 0~255의 값이 아닌 경우 등)
  
-1이 아닌 경우
  - 정상적으로 변환된 network byte order의 binary 주소 
  - 이 값은 network byte order 이므로 htonl( ) 함수로 byte order 변환 하지 않고 사용한다.

 

 


활용 예제

 

#include <stdio.h>
#include <errno.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>

#define SERVER_PORT		10000

......

struct 	sockaddr_in server_addr;
int  	sock;

......

memset(&server_addr, 0x00, sizeof(struct sockaddr_in));
server_addr.sin_family       = AF_INET;
server_addr.sin_addr.s_addr  = inet_addr("127.0.0.1");
server_addr.sin_port         = htons(SERVER_PORT);

...

if(connect(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr_in)) == -1) {
    fprintf(stderr, "Connection Error: %s\n", strerror(errno));
    close(sock);
    return -1;
}

......

 

 


see also : Socket 통신과 Socket 응용

 

 

 

 

블로그 이미지

자연&사람

행복한 개발자 programmer since 1995.

Tag , , ,

댓글을 달아 주세요