#include<arpa/inet.h>
int inet_aton(const char *strptr, struct in_addr *addrptr );
//返回 1——串有效。0——串错误
将strptr指向的C字符串转换称32位网络字节序二进制值;并通过指针addrptr存储
in_addr_t inet_addr( const char *strptr );
若成功。返回32位2进制网络字节序。有错返回。INADDR_NONE(一般为32位都是1的值,这就意味点分十进制数串255.255.255.255不能有这个函数处理)
char *inet_ntoa( struct in_addr inaddr );
返回指向点分十进制数串的指针
以上3个函数只能处理IPV4
以下2个函数IPV4和IPV6都能够处理
#include <arpa/inet.h>
int inet_pton( int family, const char *strptr, void *addrptr );
返回1——成功。0——输入不是有效的表达式。-1——出错;
const char *inet_ntop( int family, const void *addrptr, char *strptr, size_t len );
返回:指向结果的指针——成功。NULL——出错。
以上2个函数的参数family既可以是AF_INET.也可以是AF_INET6.如果以不被支持的地址族作为family参数。两个函数返回错。并将
errno置为EAFNOSUPPORT.
len是目标大小。以免溢出。
<netinet/in.h>
中定义:#define INET_ADDRSTRLEN 16; //for ipv4
#define INET6_ADDRSTRLEN 46 //for ipv6
如果len太小。返回空指针。置errno为ENOSPC.
int inet_aton(const char *strptr, struct in_addr *addrptr );
//返回 1——串有效。0——串错误
将strptr指向的C字符串转换称32位网络字节序二进制值;并通过指针addrptr存储
in_addr_t inet_addr( const char *strptr );
若成功。返回32位2进制网络字节序。有错返回。INADDR_NONE(一般为32位都是1的值,这就意味点分十进制数串255.255.255.255不能有这个函数处理)
char *inet_ntoa( struct in_addr inaddr );
返回指向点分十进制数串的指针
以上3个函数只能处理IPV4
以下2个函数IPV4和IPV6都能够处理
#include <arpa/inet.h>
int inet_pton( int family, const char *strptr, void *addrptr );
返回1——成功。0——输入不是有效的表达式。-1——出错;
const char *inet_ntop( int family, const void *addrptr, char *strptr, size_t len );
返回:指向结果的指针——成功。NULL——出错。
以上2个函数的参数family既可以是AF_INET.也可以是AF_INET6.如果以不被支持的地址族作为family参数。两个函数返回错。并将
errno置为EAFNOSUPPORT.
len是目标大小。以免溢出。
<netinet/in.h>
中定义:#define INET_ADDRSTRLEN 16; //for ipv4
#define INET6_ADDRSTRLEN 46 //for ipv6
如果len太小。返回空指针。置errno为ENOSPC.