(1)inet_addr :转换字符串到地址
(2)inet_ntoa 转换地址到字符串
(3)htons ,h=host,n=network,s = short 。常用于绑定之前地址结构体的设置,将本机端口转为网络字节序。
(4)ntohs ,h=host,n=network,s = short。 常用于与对方通信后,在需要使用对方端口的时候,将其中(收到的对方端口为网络字节序)转为主机字节序。
(5)inet_pton, p=pointer n=network。功能同(1),该函数只在linux下有效,winsock无此函数。
(6)inet_ntop ,p=pointer n=network。功能同(2),该函数只在linux下有效,winsock无此函数。
(7)htonl,将unsigned long 数据从主机序转为网络序列。(用于格式化本机数据,在网络中传输)
(8) ntohl,将unsigned long 数据从网络序转为主机序列。(用于将网络中接收到的数据转化为本地可识别的整数)
示例:
(1)和(3)
struct sockaddr_in serv_addr;
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=inet_addr("127.0.0.1");
serv_addr.sin_port=htons(5000);
(2)和(4),假设此时cli_addr结构体已通过accept填充。
struct sockaddr_in cli_addr;
puts(inet_ntoa(cli_addr.sin_addr));
printf("%d\n" ,ntohs(cli_addr.sin_port));
(5)和(6)
struct in_addr s;
inet_pton(AF_INET, "127.0.0.1", (void *)&s);
printf("inet_pton: 0x%x\n", s.s_addr);
char addr_str[16]={0x00};
inet_ntop(AF_INET, (void *)&s, addr_str, 16);