关闭

(3)网络字节序二进制和ASC字符串转换

636人阅读 评论(0) 收藏 举报
#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.
 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4766次
    • 积分:101
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档
    最新评论