struct sockaddr의 상세 유형

#include <sys/socket.h>

struct sockaddr {
    sa_family_t sa_family;
    char        sa_data[14];
};

struct sockaddr 구조체는 socket 통신에서 사용하는 주소를 관리용 구조체로서 이 구조체를 직접사용하지 않고 Address Family 상수값에 따라 구조체를 달리 정의하여 사용합니다. bind(2), connect(2), accept(2) 등에서 이들 구조체를 사용며, 단지 struct sockaddr은 대표 주소 type이므로 parameter로 전달 시에 type casting용으로만 사용됩니다.

 

 

AF_INET

#include <netinet/in.h>

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 */
};

 

AF_INET6

#include <netinet/in.h>

struct sockaddr_in6 {
    sa_family_t     sin6_family;   /* AF_INET6 */
    in_port_t       sin6_port;     /* port number */
    uint32_t        sin6_flowinfo; /* IPv6 flow information */
    struct in6_addr sin6_addr;     /* IPv6 address */
    uint32_t        sin6_scope_id; /* Scope ID (new in 2.4) */
};

struct in6_addr {
    unsigned char   s6_addr[16];   /* IPv6 address */
}; 

 

AF_UNIX  또는 AF_LOCAL

#include <sys/un.h>

#define UNIX_PATH_MAX    108

struct sockaddr_un {
    sa_family_t sun_family;               /* AF_UNIX */
    char        sun_path[UNIX_PATH_MAX];  /* pathname */
};

 


see also : Socket 통신과 Socket 응용

 

 

 

 

블로그 이미지

자연&사람

행복한 개발자 programmer since 1995.

댓글을 달아 주세요