// 2020/8/1
// 更新中
1、IP地址转换接口
#include <arpa/inet.h>
int inet_pton(int af, const char *src, void *dst);//字符串ip地址转换成网络ip地址
const char* inet_ntop(int af, const void *src, char *dst, socklen_t size);//与上相反
//af取值可选为AF_INET(ipv4,4字节) 和 AF_INET6(ipv6,16字节)
2、实例代码
#include <stdlib.h>
#include <stdio.h>
#include <arpa/inet.h>
int main(void)
{
char ip[] = "192.168.88.128";
char server_ip[16];
struct sockaddr_in server_addr;
//ip字符串转为网络,转为大端
inet_pton(AF_INET, ip, &server_addr.sin_addr.s_addr);
printf("s_addr from ip to net: %x\n", server_addr.sin_addr.s_addr);
//网络字节序转为主机字节序,转为小端
printf("s_addr from net to host: %x\n", ntohl(server_addr.sin_addr.s_addr));
//网络转字符串
inet_ntop(AF_INET, &server_addr.sin_addr.s_addr, server_ip, 16);
printf("ip from net to ip: %s\n", server_ip);
return 0;
}
3、代码对应结果:
4、解释:
first printf: from ip to net is string to network byte order, is to big endian.
second printf: from net to host is to little enian.
last printf: from net to ip is network byte order to string, is to string