zoukankan      html  css  js  c++  java
  • sockaddr_in & sockaddr

    #define __SOCKADDR_COMMON(sa_prefix) sa_family_t sa_prefix##family

    这个宏用于为套接字地址(socket addresses),如“ struct sockaddr”,“ struct sockaddr_in”等,声明数据类型的公共成员。

    struct sockaddr{
        __SOCKADDR_COMMON (sa_);
        char sa_data[14];
     };

    sockaddr结构体描述通用套接字地址(socket address)的结构,其中宏__SOCKADDR_COMMON (sa_)表示公共数据(Common data)代表地址族和长度(address family and length),char sa_data[14]表示地址数据(Address data)。

    这个结构体用做bind、connect、recvfrom、sendto等函数的参数,指明地址信息。但是一般编程中并不直接针对此数据结构操作,而是使用另一个与sockaddr等价的数据结构

    sockaddr_in。
    struct sockaddr_in {
        __SOCKADDR_COMMON (sin_);
        in_port_t sin_port;
        struct in_addr sin_addr;
        unsigned char sin_zero[sizeof (struct sockaddr) - __SOCKADDR_COMMON_SIZE - sizeof (in_port_t) - sizeof (struct in_addr)];
     };        

    sockaddr_in结构体描述Internet套接字地址的结构,其中sin_port代表端口号,注意需要将主机字节序转化为网络字节序,sin_addr表示网络地址,sin_zero表示填充到`struct sockaddr'的大小。

    typedef uint32_t in_addr_t;
    struct in_addr {
        in_addr_t s_addr;
     };

    in_addr结构体表示网络地址,注意需要将主机字节序转化为网络字节序。例如对于IP="127.0.0.1",这里s_addr应该赋值htonl(127*256*256*256+1),即s_addr=htonl(127*256*256*256+1)。

     
  • 相关阅读:
    Web Control 开发系列(三) 解析IPostBackEventHandler和WebForm的事件机制
    Web Control 开发系列(一) 页面的生命周期
    异步导入滚动条
    前端复习之HTML5
    前端复习之jQuery大全
    前端复习之JavaScript(ECMAScript5)
    前端复习之DOM、BOM
    前端复习之Ajax,忘完了
    前端复习之css
    前端基础复习之HTML
  • 原文地址:https://www.cnblogs.com/iuyy/p/13381021.html
Copyright © 2011-2022 走看看