반응형
소켓 프로그래밍에서 클라이언트/서버의 구체적인 주소를 표현하기 위해서
- 주소 체계
- IP주소
- Port번호
이 세 가지가 지정되어야 하며 이를 소켓 주소라고 합니다.
이를 담을 구조체 sockaddr은 다음과 같이 정의되어 있습니다.
struct sockaddr{
u_short sa_family; // address family
char sa_data[14]; // 주소 (IP + Port)
};
더보기
위 코드에서 u_short는 insigned short를 나타내는데 이는 type.h 헤더 파일에 들어있습니다.
위의 sockaddr 구조체는 IP주소와 Port번호를 구분하기가 불편하므로 인터넷 프로그래밍에서는 sockaddr 구조체 대신 IP Address 4바이트와 Port번호 2바이트를 구분하여 액세스 할 수 있는 인터넷 전용 소켓주소 구조체 sockaddr_in을 사용합니다.
socketaddr_in
struct socketaddr_in {
short sin_family; // 주소 체계
u_short sin_port; // 16비트 Port번호
struct in_addr sin_addr; // 32비트 IP 주소
char sin_zero[8]; // 전체 크기를 16Bytes로 맞추기 위한 dummy
}
// 32비트의 IP 주소를 저장할 구조체
struct in_addr {
u_long s_addr;
}
sin_zero[8]은 sockaddr과 sockaddr_in의 호환성을 위해 사용합니다.
sin_family | AF_INET (인터넷 주소 체계) AF_UNIX (유닉스 파일 주소 체계) AF_NS (XEROX 주소 체계) |
반응형