1:通用的socket地址格式:
struct sockaddr {
unsigned short sa_family; /* address family, AF_xxx */
char sa_data[14]; /* 14 bytes of protocol address, consist of IP and port*/
};
2:网络协议族格式的socket(sockaddr_in(在netinet/in.h中定义):)
struct sockaddr_in {
short int sin_family; /* Address family */
unsigned short int sin_port; /* Port number */
struct in_addr sin_addr; /* Internet address */
unsigned char sin_zero[8]; /* Same size as struct sockaddr */
};
其中sin_port结构体
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;
3:本地unix域格式的socket
struct sockaddr_un {
sa_family_t sun_family; /*PF_UNIX或AF_UNIX */
char sun_path[UNIX_PATH_MAX]; /* 路径名 */
};
程序中:
struct sockaddr_in serv_addr;
struct sockaddr_in remote_addr;
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(httpreg.puPort);
serv_addr.sin_addr.s_addr = inet_addr("192.168.2.142");
bzero(&(serv_addr.sin_zero), 8);
inet_addr()——将IP地址从 点数格式转换成无符号长整型
inet_ntoa()——作用和inet_addr()相反