UNIX网络编程——地址转换函数

    技术2022-05-20  44

    以下函数均可以实现在点分十进制数串与其32位网络字节序二进制间转换IP地址

     

    头文件:

    #include <arpa/inet.h>

     


     

    int inet_aton(const char *strptr,struct in_addr *addrptr);

     

            作用:将前者strptr所指C字符串转换成32位网络字节序二进制,通过后者指针addrptr存储         返回:1-串有效,0-串有错 int _addr_t inet_addr(const char *strptr);         作用:同上,但255.255.255.255不能通过这个函数来转换,不推荐使用         返回:成功返回32位二进制网络字节序地址,出错返回INADDR_NODE char *inet_ntoa(struct in_addr inaddr);         作用:将32位网络字节序IPv4地址转换为相应的点分十进制数串(字符型数组)         注意:由返回值所指的字符型数组驻留在静态内存中,即此函数不可重入。另外,其参数为一结构体,而非指针。         返回:指向点分十进制数串(数组)的指针


    下面这两个函数较新,适用于IPv4和IPv6

     

     

    int inet_pton(int family, const char *strptr, void *addrptr);

            作用:将前一个指针中所指字符串转换为二进制结果,存储在后一个指针中,即将IP地址由strptr(表达格式)转换为addrptr(数值格式)         返回:1-成功,0-输入格式无效,-1-出错 const char *inet_ntop(int family, const void *addrptr, char *strptr, size_t len);         作用:将IP地址由addrptr(数值格式)转换为strptr(表达格式)         返回:成功则返回指向结果的指针,失败返回NULL p-presentation-表达格式 n-numeric-数值格式 family-可以是AF_INET(IPv4)或是AF_INET6(IPv6)


    最新回复(0)