先看下MSDN上怎么说
The sockaddr structure varies depending on the protocol selected. Except for the sa_family parameter, sockaddr contents are expressed in network byte order.
struct sockaddr { u_short sa_family; char sa_data[14]; };sockaddr根据选择的协议而改变,除了sa_family参数,sockaddr包含的内容用网络字节顺序表示
In the Internet address family, this structure is used by Windows Sockets to specify a local or remote endpoint address to which to connect a socket. This is the form of the SOCKADDR structure specific to the Internet address family and can be cast to SOCKADDR.
struct sockaddr_in{ short sin_family; unsigned short sin_port; IN_ADDR sin_addr; char sin_zero[8];};在因特网地址家族中,该结构体被用在Windows套接字编程中去连接一个指定的本地或远程套接字。这是特殊的网络地址家族形式并且可以强制转换为SOCKADDR
其实这两种结构体是一样的,只是后者在赋值时更方便罢了