struct sockaddr 和 struct sockaddr_in 这两个结构体都是用来 处理网络通信的地址
/* *此数据结构用做bind、connect、recvfrom、sendto等函数的参数,指明地址信息 *note: * 目标地址和端口信息在一起 */#include <sys/socket.h>struct sockaddr{ //地址家族,一般“AF_xxx”的形式,通常使用AF_INET unsigned short sa_family; // 14字节协议地址,目标地址和端口信息 char sa_data[14];}#include <netinet/in.h>struct sockaddr_in { short int sin_family; //协议族 unsigned short int sin_port; //端口号(使用网络字节顺序) struct in_addr sin_addr; //IP地址 unsigned char sin_zero[8]; //sockaddr与sockaddr_in 保持大小相同而保留的空字节};struct in_addr { unsigned long s_addr;};typedef 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;} IN_ADDR;
sockaddr_in和sockaddr是并列的结构,指向sockaddr_in的结构体的指针,同样可以 指向sockraddr的结构体,并代替它
struct sockaddr_in mysock;bind(sockfd,(struct sockaddr *)&mysock,sizeof(struct sockaddr); /* bind的时候进行转化 */