struct sockaddr_in { short sin_family; uint16_t sin_port; struct in_addr sin_addr; char sin_zero[8]; };
sin_family는 메모리 레이아웃상 sockaddr의 sa_family와 같은 위치이며 같은 기능을 한다.
sin_port는 포트값을 16비트로 나타낸다.
sin_addr는 4바이트의 IPv4 주소를 나타낸다. in_addr 자료형은 소켓 라이브러리마다 조금씩 다르다. 어떤 플랫폼에선 그냥 4바이트 정수이다. 하지만 IPv4는 보통 4바이트 정수로 쓰기보다는, 마침표로 구분된 각 숫자를 네 개의 바이트로 쓰는 경우가 많다. 이 때문에 여러 플랫폼에서 여러 구조체를 유니온으로 감싸둔 구조체로 값을 지정할 수 있게 해 놓았다.
struct in_addr { union { struct { uint8_t s_b1,s_b2,s_b3,s_b4; } S_un_b; struct { uint16_t s_w1,s_w2; } S_un_w; uint32_t S_addr; } S_un; };