2012년 2월 9일 목요일

SOCKADDR_IN


SOCKADDR_IN
SOCKADDR_IN 구조체는 아래와 같은 형태를 가집니다.
struct sockaddr_in{
        short                  sin_family;
        unsigned short    sin_port;
        struct  in_addr     sin_addr;
        char                   sin_zero[8];
};
SOCKADDR_IN 구조체는 소켓이 접속해 있는 로컬 또는 원격지 주소를 표현하는데 사용됩니다. SOCKADDR_IN 구조체의 길이는SOCKADDR 구조체의 길이와 동일합니다. 그러나 SOCKADDR_IN 구조체의 데이터 부분에 있는 필드들은 프로그램에 의한 관리가 가능할 정도로 명확하게 선언되어 있습니다. 일반적으로 프로그램은 변수를 SOCKADDR_IN 구조체로서 선언한 다음에 함수 호출 시 변수에 대한 포인터를 SOCKADDR 구조체로 캐스팅 해서 넘기는 방법을 주로 사용하고 있습니다.

Members
sin_family
주소 패밀리 (반드시 AF_INET이여야 합니다)
sin_port
네트웍 바이트 오더로 이루어진 포트 번호
sin_addr
네트웍 바이트 오더로 이루어진 아이피 번호
sin_zero
사용되지 않는 필드이며 0으로 설정될 수 있습니다. 
SOCKADDR에서 같의 위치의 같은 크기또한 사용하지 않습니다.
Comments
sin_addr 필드는 IN_ADDR 타입의 또 다른 구조체입니다. 프로그램은 IN_ADDR 구조체를 이용하여 IP 어드레스의 각 부분에 접근 할 수 있습니다. IN_ADDR 구조체는 윈도우즈 소켓 헤더 파일인 WINSOCK.H 에 다음과 같이 선언되어 있습니다.
struct   in_addr {
        union {
                struct {
                      unsigned  char   s_b1,
                                              s_b2,
                                              s_b3,
                                              s_b4;
                }  S_un_b;

                struct {
                      unsigned  short  s_w1,
                                              s_w2;
                }  S_un_w;

                unsigned long  S_addr;
        } S_un;
};

댓글 없음:

댓글 쓰기