패밀리 상수 | 설명 | 주소 표현 방식 |
---|---|---|
AF_INET | 인터넷 소켓(IPv4주소체계) | 32bit IP주소+16bit포트번호 |
AF_UNIX | 유닉스 도메인 소켓 | 파일 시스템의 경로명 |
AF_INET6 | IPv6 주소체계 | IPv6주소(128bit)+포트번호 |
기타 | 블루투스(AF_BLUETOOTH) 등 |
SOCK_STREAM
를 사용SOCK_DGRAM
을 사용위 분류의 상수 값들을 사용해 주로 사용되는 4종류의 소켓 유형을 갖게 된다.
struct sockaddr_un {
__kernel_sa_family_t sun_family; /* AF_UNIX */
char s sun_path[UNIX_PATH_MAX]; /* 경로명 */
};
struct sockaddr_in {
__kernel_sa_family_t sin_family; /* 주소 패밀리명 */
__be16 sin_port; /* 포트 번호 */
struct in_addr sin_addr; /* 인터넷 주소 */
};
struct in_addr {
__be32 s_addr; /* 32비트 주소 */
};
htons()
를 사용해 변환해주어야 한다.in_addr
구조체로 함)ex)
struct sockaddr_in addr; // IPv4 소켓 주소 구조체
memset(&addr, 0, sizeof(addr)); // 구조체를 전부 0으로 초기화
addr.sin_family = AF_INET; // 주소체계 지정
addr.sin_addr.s_addr = inet_addr("192.168.147.129"); // IP주소 지정.
// inet_addr : 문자열 IP주소를 이진값으로 바꿔서 리턴
addr.sin_port = htons(9000); // 9000번 포트