地址转换函数
在 socket 编程中,对于地址转换函数,BSD包含
inet_addr(),inet_aton()和inet_ntoa()三个函数用于二进制地址格式与点分十进制之间的相互转换,但是仅仅适用于 IPv4;inet_ntop()和inet_pton()具有相似的功能,并且同时支持 IPv4 和 IPv6;字母p代表presentation,字母n代表numeric。
inet_addr
- 头文件: - #include <arpa/inet.h>
- 功能:该函数用于将 点分十进制 IP 地址转换成 网络字节序 IP 地址。 
- 原型: - 1 - in_addr_t inet_addr(const char *cp); 
- 返回值:如果正确执行,将返回一个无符号长整数型数;如果传入的字符串不是一个合法的IP地址,将返回 - INADDR_NONE。
inet_aton
- 头文件: - #include <arpa/inet.h>
- 功能:该函数用于将 点分十进制 IP 地址转换成 网络字节序 IP 地址。 
- 原型: - 1 - int inet_aton(const char *string, struct in_addr *addr); 
- 返回值:如果正确执行,函数的返回值非零,如果输入地址不正确则会返回零。 
inet_ntoa
- 头文件: - #include <arpa/inet.h>
- 功能:该函数用于 网络字节序 IP 转化 点分十进制 IP 地址。 
- 原型: - 1 - char *inet_ntoa (struct in_addr); 
- 返回值:如果正确执行,将返回一个字符指针;否则,返回 - NULL。
inet_pton
- 头文件: - #include <arpa/inet.h>
- 功能:该函数用于将 点分十进制 IP 地址转换成 网络字节序 IP 地址。 
- 原型: - 1 - int inet_pton(int domain, const char *restrict str, void *restrict addr); 
- 返回值:如果正确执行,返回1;如果参数格式无效,返回0;如果出错,返回-1。 
inet_ntop
- 头文件: - #include <arpa/inet.h>
- 功能:该函数用于 网络字节序 IP 转化 点分十进制 IP 地址。 
- 原型: - 1 - const char *inet_ntop(int domain, const void *restrict addr, char *restrict str, socklen_t size); 
- 返回值:如果正确执行,返回地址字符串指针;否则,返回NULL。 
例子
例子1
| 1 | 
 | 
输出结果
| 1 | 网络字节序 IP : 0x100007f | 
例子2
| 1 | 
 | 
输入结果
| 1 | 网络字节序 IP : 0x100007f | 
端口转换函数
htons
- 头文件: - #include <netinet/in.h>
- 功能:将主机字节顺序转换为网络字节顺序; - host to network long。
- 原型: - 1 - uint32_t htonl(uint32_t hostlong); 
- 返回值:转换后的值。 
htons
- 头文件: - #include <netinet/in.h>
- 功能:将主机字节顺序转换为网络字节顺序; - host to network short。
- 原型:返回转化后的值。 - 1 - uint16_t htons(uint16_t hostshort); 
- 返回值:转换后的值。 
ntohl
- 头文件: - #include <netinet/in.h>
- 功能:将网络字节顺序转换为主机字节顺序; - network to host long。
- 原型: - 1 - uint32_t ntohl(uint32_t netlong); 
- 返回值:转换后的值。 
ntohs
- 头文件: - #include <netinet/in.h>
- 功能:将网络字节顺序转换为主机字节顺序; - network to host short。
- 原型: - 1 - uint16_t ntohs(uint16_t netshort); 
- 返回值:转换后的值。 
 
        