더북(TheBook)
struct sockaddr_in
{
    short sin_family;
    uint16_t sin_port;
    struct in_addr sin_addr;
    char sin_zero[8];
};

sin_family는 메모리 레이아웃상 sockaddrsa_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;
};

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.