inet_ntoa(3)

#include <arpa/inet.h>

char *inet_ntoa(struct in_addr in);

network byte order의 binary 주소를 "a.b.c.d"형태인 IPv4 주소(dotted-decimal notation) 형태의 문자열로 변환한다.

 

위의 struct in_addr는 AF_INET Address Family 주소 체계에 포함된 구조체이다. 

struct sockaddr_in {
    sa_family_t    sin_family; /* AF_INET */
    in_port_t      sin_port;   /* port 번호 - network byte order(즉, big endian) */
    struct in_addr sin_addr;   /* IP address */
};


/* Internet address. */
struct in_addr {
    uint32_t       s_addr;     /* address in network byte order */
};

 

파리미터

in 
   - accept(2), getpeername(2), getsockname(2) 등으로 얻은 주소정보이다.

 

RETURN

숫자 점 표기법의 IP주소 : 인간이 쉽게 알아볼 수 있는 "a.b.c.d" 형태의 IP 주소 문자열을 return 한다.

 


활용 예제

int    server_fd;
int    connected_fd;
struct    sockaddr_in client;
socklen_t addr_len = sizeof(struct sockaddr_in);
char      remote_ip_addr[16];

......

if((connected_fd = accept(server_fd, &client, &addr_len)) == -1) {
    fprintf(stderr, "socket create error: %s\n", strerror(errno));
    return -1;   
}

strncpy(remote_ip_addr, inet_ntoa(client.sin_addr.s_addr), 16);

printf("%s IP에서 접속하였습니다.\n", remote_ip_addr);

......

 

 


see also : Socket 통신과 Socket 응용

 

 

 

 

 

블로그 이미지

자연&사람

행복한 개발자 programmer since 1995.

Tag , , ,

댓글을 달아 주세요