主机字节序转网络字节序
#include <arpa/inet.h>
uint32_t htonl(uint32_t hostlong); /* 无符号的32位整型数据的转换 */
int16_t htons(uint16_t hostshort); /* 无符号的16位整型数据的转换 */
/*
功能:htons和htonl都是实现将主机字节序数据转换为网络字节序数据
参数:hostlong和hostshort标识主机字节序数据
返回值:网络字节序数据
*/
网络字节序转主机字节序
#include <arpa/inet.h>
uint32_t ntohl(uint32_t netlong); /* 无符号的32位整型数据的转换 */
uint16_t ntohs(uint16_t netshort); /* 无符号的16位整型数据的转换 */
/*
参数:netlong和netshort标识网络字节序数据
返回值:主机字节序数据
*/
将字符串IP地址转换为网络字节序的整型数据
#include <arpa/inet.h>
int inet_pton(int af, const char *src, void *dst);
/*
参数1:af表示地址协议族
AF_INET: 基于IPV4协议族的IP地址
AF_INET6: 基于IPV6协议族的IP地址
参数2:src指针指向的字符串IP地址;
参数3:det目标指针用来返回转换接收的整型数据(网络字节序的IP地址);
返回值:
装换成功返回1;af指定地址协议族中没有找到IP则返回0,否则失败返回-1
*/
将网络字节序数据转换为主机字符串IP地址
#include <arpa/inet.h>
const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);
/*
参数1:af表示地址协议族
AF_INET: 基于IPV4协议族的IP地址
AF_INET6: 基于IPV6协议族的IP地址
参数2:传递网络字节序IP地址的整型数据存储空间的地址;
参数3:返回主机字节序IP地址,
参数4:表示参数3所对对应空间的大小
size可以使用宏定义:
INET_ADDRSTRLEN //ipv4空间大小;
INET6_ADDRSTRLEN //ipv6空间大小;
返回值:成功返回dst的指针,失败返回NULL且修改errno的值。
*/
网络字节序IP和主机字节序IP转换其它API
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int inet_aton(const char *cp, struct in_addr *inp);
//功能: 将cp指向的主机字节序IP地址转换为网络字节序的IP地址存储在结构体指针inp指向的空间中
in_addr_t inet_addr(const char *cp);
//功能:将cp指向的主机字节序IP地址转换为网络字节序的IP地址通过函数的返回值返回
in_addr_t inet_network(const char *cp);
//功能:将cp指向的主机字节序IP地址转换为网络字节序的IP地址通过函数的返回值返回
char *inet_ntoa(struct in_addr in);
//功能:将网络字节序IP地址转为主机字节序的字符串IP地址通过返回值返回。
struct in_addr inet_makeaddr(in_addr_t net, in_addr_t host);
in_addr_t inet_lnaof(struct in_addr in);
in_addr_t inet_netof(struct in_addr in);
网友评论