Sockaddr和sockaddr_in的相互关系
一般先把sockaddr_in变量赋值后,强制类型转换后传入用sockaddr做参数的函数
sockaddr_in用于socket定义和赋值
sockaddr用于函数参数
sockaddr_in结构体:struct sockaddr_in中的in表示internet,就是网络地址,这只是我们比较常用的地址结构,属于AF_INET地址族,sockaddr_in结构体解决了sockaddr的缺陷,把port和addr分开存储在两个变量中。
struct sockaddr_in
{
short int sin_family;
unsigned short int sin_port;
struct in_addr sin_addr;
}
sin_family指代协议族,在socket编程中只能是AF_INET
sin_port存储端口号(使用网络字节顺序)
sin_addr存储IP地址,使用in_addr这个数据结构
struct sockaddr结构体是一个通用地址结构,sa_data把目标地址和端口信息混在一起了。
struct sockaddr
{
sa_family_t sin_family;
char sa_data[14];//14字节,包含套接字中的目标地址和端口信息
}