zoukankan      html  css  js  c++  java
  • sockaddr_in 与 in_addr的区别

    struct sockaddr_in {
    short int sin_family; /* 地址族 */
    unsigned short int sin_port; /* 端口号 */
    struct in_addr sin_addr; /* Internet地址 */
    unsigned char sin_zero[8]; /* 与struct sockaddr一样的长度 */
    };


    struct in_addr就是32位IP地址。
    struct in_addr {
    unsigned long s_addr;
    };

    所以 sin_addr 就是结构体 in_addr, 里面包含s_addr这32位IP地址


    1、 inet_addr、 inet_ntoa inet_aton

    a、inet_addr()的作用,就是将inet_addr()转化为长整数
    inet_addr()的功能是将一个点分十进制的IP转换成一个长整数型数(u_long类型)等同于inet_addr(),
    主要将一个点间隔地址转换成一个in_addr。 方便赋值给 in_addr

    b、inet_ntoa 主要是将 sin_addr的这32位整数转换成"."点隔的字符串格式
    inet_ntoa(sin_addr)


    c、inet_aton 跟 inet_ntoa 的相反, 主要是将点隔的字符串转换为sin_addr这个结构体的内容


    inet_addr 与 inet_aton、inet_ntoa的主要区别是 inet_addr 直接赋值给s_addr, 而inet_ntoa针对的是struct in_addr这个结构体

    http://www.cnblogs.com/hnrainll/archive/2011/07/18/2109375.html
    该网址区分struct sockaddr 与 struct sockaddr_in 这两个结构体
    本质上是一样的内容。

  • 相关阅读:
    Java操作excel
    (13)C++ 多态
    (12)C++ 继承
    (18)C++ string和标准模板库
    parseInt(str),parseFloat(str)
    JavaScript substring() 方法
    JavaScript遍历对象中所有元素
    JavaScript中的number跟string
    mybatis动态sql
    Android数据存储之Android 6.0运行时权限下文件存储的思考
  • 原文地址:https://www.cnblogs.com/hzijone/p/7477778.html
Copyright © 2011-2022 走看看