반응형
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 응용
반응형
'C언어 header > sys | socket.h' 카테고리의 다른 글
connect(2) - 서버로 접속하기 (0) | 2019.09.29 |
---|---|
accept(2) / accept4(2) - client와 연결된 새로운 socket 생성 (0) | 2019.09.29 |
listen(2) - client가 접속할 수 있도록 준비 작업 (0) | 2019.09.29 |
bind(2) - socket에 주소를 설정함 (0) | 2019.09.29 |
socket(2) - socket 생성 (0) | 2019.09.29 |