• 字节操作函数


    这里介绍两组地址转换函数,他们在ASCII字符串与网络字节序的二进制之间转换网际地址。

    l inet_aton、inet_addr和inet_ntoa在点分十进制数串(如:“127.0.0.1”)与它的长度为32位的网络字节序二进制值间转换IPv4地址。

    l 两个新的函数:inet_pton和inet_ntop对于IPv4和IPv6都适用。

    clip_image002

    clip_image004

    l inet_addr()将一个char型字符串转换为32位的IPv4网络字节序,如果失败则返回INADDR_NONE;该函数存在一个问题,所有223个可能的二进制值都是有效的IP地址(从0.0.0.0~255.255.255.255)!!!!但是当出错时该函数返回INADDR_NONE,这就意味着点分十进制数串255.255.255.255(这是IPv4的有限广播地址)不能由该函数处理,因为它的二进制数值被用来指示该函数失败。

    所以尽量使用

    l inet_aton()和inet_addr()功能一样,但更加改进,在UNIX下建议使用;返回的结果转换为一个32位网络序二进制值,通过指针strptr所指;

    l inet_ntoa()将一个32位网络字节序的二进制IPv4地址转换成相应的十进制字串。由该函数的返回值所指向的字符串驻留在静态内存中。这就意味着该函数是不可重入的。

    clip_image006

    clip_image008

    这两个函数适用于IPv6地址,兼容IPv4,建议尽量使用它们。其中:

    p:presentation--表达;

    n:numeric—数值;

    其中,Family可以是AF_INET也可以是AF_INET6;

    inet_pton尝试转换由pszAddrString指针所指的字符串,通过pAddrBuf存放二进制结果;

    若成功则返回1,否则返回0;

    inet_ntop则相反,从数值转换为表达式,len参数是目标存储单元的大小,以避免函数溢出其调用者的缓冲区。为有助于指定这个大小,有如下定义:

    clip_image009

    如果len太小,不足以容纳表达式结果,那么返回一个空指针,并使errno为ENOSPC;该函数的pStringBuf不可以是一个空指针,调用者必须为目标存储单元分配内存并指定其大小。

  • 相关阅读:
    JavaScript引擎简单总结
    浏览器内核简单总结
    JavaScript学习总结(十七)——Javascript原型链的原理
    JavaScript学习总结(十六)——Javascript闭包(Closure)
    JavaScript学习总结(十四)——JavaScript编写类的扩展方法
    JavaScript学习总结(十三)——极简主义法编写JavaScript类
    HashMap源码解析 jdk1.8
    位运算 1 << 4
    JavaScript学习总结(十二)——JavaScript编写类
    JavaScript学习总结(十一)——Object类详解
  • 原文地址:https://www.cnblogs.com/davidsguo008/p/3582057.html
Copyright © 2020-2023  润新知