SOCKADDR
SOCKADDR 구조체는 특정한 프로토콜에 종속되는 것이 아닙니다. sa_family 필드를 제외하고 SOCKADDR 구조체의 멤버는 네트웍바이트 오더로 표현됩니다. 해석이 좀 이상하져? 아래에 원문을 포함 하겠습니다.
The SOCKADDR structure varies depending on the protocol selected. Except for the sa_family field, SOCKADDR contents are expressed in network byte order.
무슨 말이냐구여? SOCKADDR 구조체는 다중 프로토콜을 지원하는 버클리 소켓의 원래 목표를 반영하는 의지를 담고있죠. 즉, SOCKADDR 구조체는 TCP/IP 프로토콜에서만 사용하는 구조체가 아닙니다. TCP/IP에 대한 어드레스 정보를 표현하기 위해서는 sa_family에 AF_INET 상수 값을 사용해야 하죠. 마찬가지로 ISO 어드레스 정보를 표현하기 위해서는 AF_ISO 상수 값에 의해서 확인됩니다. SOCKADDR 구조체의 나머지는 14 바이트의 정보이며, 이 정보의 구조는 sa_family 필드의 값에 따라 결정되게 됩니다.
struct sockaddr{
u_short
sa_family;
char sa_data[14];
};
SOCKADDR 구조체의 관리를 보다 더 쉽게 하기 위해 윈도우즈 소켓은 TCP/IP 어드레스와 작업할 때 SOCKADDR 구조체를 사용하는 것과 동일한 구조체인 SOCKADDR_IN을 선언해 놓고 있습니다.
이 구조체는 TCP/IP와 함께 사용됩니다. 다른 프로토콜은 이와 유사한 구조체를 사용합니다.
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
See Also