The SOCKADDR structure varies depending on the protocol selected. Except for the sa_family field, SOCKADDR contents are expressed in network byte order.
struct sockaddr {
u_short sa_family;
char sa_data[14];
};
In Windows Sockets 2, the name parameter is not strictly interpreted as a pointer to a SOCKADDR structure. It is presented in this manner for Windows Sockets compatibility. The actual structure is interpreted differently in the context of different address families. The only requirements are that the first u_short
is the address family and the total size of the memory buffer in bytes is namelen
The structure below is used with TCP/IP. Other protocols use similar structures.
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};