zoukankan      html  css  js  c++  java
  • Socket_Internet 命名空间

      英特网目前有两种地址格式:1、IPv4(32位地址格式)2、IPv6(128位地址格式)。IPv4的命名空间为PF_INET,IPv6的命名空间则为PF_INET6。

    #incldue <sys/socket.h>
    int PF_INET
    int PF_INET6

    Internet 命名空间下的socket地址有以下两个组件:

    1、想连接的机器的地址:有几种表示方式,1、Internet Address Formats;2、Host Addresses;3、Host Names

    2、端口号

    地址和端口号都要遵循一个叫网络字节顺序的标准格式。

    Internet Socket Address Formats:

    #include <netinet/in.h>
    struct sockaddr_in {
        sa_family_t sin_family,//指明了使用的socket地址的地址族。在Internet中为AF_INET
        struct in_addr sin_addr,//主机的地址(IP地址,或者主机名)
        unsigned short int sin_port//端口好
    }
    
    struct sockaddr_in6 {
        sa_family_t sin6_family,
        struct in6_addr sin6_addr,
        unint32_t sin6_flowinfo,  //未实现部分。。。。。。
        unit16_t sin6_port,
    }

    Host addresses和host name:

      主机地址指的就是平常所说的ip地址,比如IPv4地址128.52.46.32。IPv6地址

    5f03:1200:836f:c100::1。

      主机地址的数据类型:IPv4地址占32位,最好使用unit32_t类型或者struct in_addr。

      IPv6占128位,使用struct in6_addr。

    #include <netinet/in.h>
    
    struct in_addr {
        uint32_t s_addr;
    }
    
    uint32_t INADDR_LOOPBACK       //特指地址127.0.0.1
    uint32_t INADDR_ANY                //代表任何接入的地址。
    uint32_t INADDR_BROADCAST   //广播地址
    uint32_t INADDR_NONE            //标识错误
    
    struct in6_addr 
    
    struct in6_addr in6addr_loopback //代表Ipv6的回环地址::1
    IN6ADDR_LOOPBACK_INIT //与上等同
    struct in6_addr in6addr_any //IPV6常量地址'::'。表示任何接入的地址
    IN6ADDR_ANY_INIT //与上等同
     

      每台计算机都可以有一个或多个主机名,比如:www.gnu.org。

    对于端口号提供了两个宏

    #include <netinet/in.h>
    int IPPORT_RESERVED
    int IPPORT_USERRESERVED

    端口号小于IPPORT_RESERVED保留给特定应用程序或协议。端口号大于IPPORT_USERRESERVED用于显示使用,系统不会自动分配。

    如果你的socket未指定地址,系统会自动申请一个介于IPPORT_RESERVED和IPPORT_USERRESERVED之间的端口。

  • 相关阅读:
    [ZOJ 4062][2018ICPC青岛站][Plants vs. Zombies]
    [Wannafly挑战赛28][B msc和mcc][预处理+枚举]
    [codeforces Mail.Ru Cup 2018 Round 1 D][ xor 操作]
    [codeforces round#475 div2 ][C Alternating Sum ]
    [zoj4045][思维+dfs]
    [zoj4046][树状数组求逆序(强化版)]
    费马大定理以及求解a^2+b^2=c^2的奇偶数列法则
    【HDOJ3567】【预处理bfs+映射+康拓展开hash】
    POJ1279 Art Gallery 多边形的核
    第八周 Leetcode 44. Wildcard Matching 水题 (HARD)
  • 原文地址:https://www.cnblogs.com/san-fu-su/p/5751533.html
Copyright © 2011-2022 走看看