in_addr_t inet_addr(const char* strptr); inet_addr函数可以转化字符串,主要用来将一个十进制的数转化为二进制的数,用途多于ipv4的IP转化。返回值:如果若字符串有效则正确执行将返回一个无符号长整数型数(这32位无符号长整型是二进制网络字节序的IPV4地址)。如果传入的字符串不是一个合法的IP地址,将返回INADDR_NONE。
测试sin_family占两个字节
#include <stdio.h>
#include <arpa/inet.h>
#define SER_IP "127.0.0.1"
#define SER_PORT 6666
int main(){
struct sockaddr_in serv_addr;
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(SER_PORT);
printf("AF_INET = 0x%x\n", AF_INET); // 0x2
printf("serv_addr.sin_family = 0x%x\n", serv_addr.sin_family); // 0x2
printf("htonl AF_INET = 0x%x\n", htonl(AF_INET));//0x2000000
printf("htonl serv_addr.sin_family = 0x%x\n", htonl(serv_addr.sin_family));//0x2000000
printf("htons AF_INET = 0x%x\n", htons(AF_INET));//0x200
printf("htons serv_addr.sin_family = 0x%x\n", htons(serv_addr.sin_family));//0x200
printf("sizeof(serv_addr.sin_family ) = 0x%x\n", sizeof(serv_addr.sin_family ));//0x2
return 0;
}