주소 구조체가 정의 되어 있는 이유
- 소켓 주소 = IP + 포트
- IPv4 // IPv6 ⇒ 어떤 프로토콜이냐에 따라 주소 정보를 나타내는 데이터 타입이 달라짐
관련 헤더 파일
#include <netinet/in.h>
#include <arph/inet.h> // 이 안에 netinet/in.h가 포함됨
주소 구조체 종류
Socket Structure |
Address Family |
struct sockaddr_dl |
AF_LINK |
struct sockaddr_in |
AF_INET |
struct sockaddr_in6 |
AF_INET6 |
struct sockaddr_ll |
AF_PACKET |
struct sockaddr_un |
AF_UNIX |
sockaddr
- sockaddr 구조체는 소켓의 주소를 담는
기본 구조체 틀의 역할
- 그래서 보통 connect 같은 함수 들이 인자 타입으로 sockaddr을 받는다
- sockaddr_in 이던, sockaddr_un이던 sockaddr 타입으로 형변환한 값이 매개변수로 들어간다
- sockaddr 구조체는 일반적인 (범용적으로 사용 가능한) 구조체이다.
struct sockaddr {
u_short sa_family; // 주소 체계
char sa_data[14]; // 주소체계에서 사용하는 주소 정보
// IP 정보 + 포트 정보
}
sockaddr_in