首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IP结构中的缩写"s_“、"ai_”、"sin_“、" in”(如果有)是什么意思?

IP结构中的缩写"s_“、"ai_”、"sin_“、" in”(如果有)是什么意思?
EN

Stack Overflow用户
提问于 2011-11-18 18:22:54
回答 2查看 1.7K关注 0票数 16

很简单的问题。是的,也许这并不重要,但我真的很好奇它们是什么意思,我找不到它们的含义。

代码语言:javascript
运行
复制
// ipv4
struct sockaddr_in {
    short int          sin_family;  // Address family, AF_INET
    unsigned short int sin_port;    // Port number
    struct in_addr     sin_addr;    // Internet address
    unsigned char      sin_zero[8]; // Same size as struct sockaddr
};

// ipv4    
struct in_addr {
    uint32_t s_addr; // that's a 32-bit int (4 bytes)
};

// ipv6
struct addrinfo {
    int              ai_flags;     // AI_PASSIVE, AI_CANONNAME, etc.
    int              ai_family;    // AF_INET, AF_INET6, AF_UNSPEC
    int              ai_socktype;  // SOCK_STREAM, SOCK_DGRAM
    int              ai_protocol;  // use 0 for "any"
    size_t           ai_addrlen;   // size of ai_addr in bytes
    struct sockaddr *ai_addr;      // struct sockaddr_in or _in6
    char            *ai_canonname; // full canonical hostname

    struct addrinfo *ai_next;      // linked list, next node
};

// ipv6    
struct sockaddr {
    unsigned short    sa_family;    // address family, AF_xxx
    char              sa_data[14];  // 14 bytes of protocol address
}; 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-18 18:25:44

sin_表示sockaddr_inai_表示addrinfosa_表示sockaddr。我不确定in_addr中的s_。套接字API的设计考虑到了20世纪80年代早期的准标准C编译器,它可能对所有struct成员都有一个名称空间。

票数 31
EN

Stack Overflow用户

发布于 2016-06-17 07:46:44

in_addrMicrosoft definition可能暗示"S_“前缀的意思是struct,正如@R..的答案,看到"un”代表union,但是他们使用大写的"S“,而不像POSIX land。

代码语言:javascript
运行
复制
typedef struct in_addr {
  union {
    struct {
      u_char s_b1,s_b2,s_b3,s_b4;
    } S_un_b;
    struct {
      u_short s_w1,s_w2;
    } S_un_w;
    u_long S_addr;
  } S_un;
} IN_ADDR, *PIN_ADDR, FAR *LPIN_ADDR;

对于套接字结构集,"s“通常表示"sock”,缩写为" socket ",因此似乎没有定义原因。

出于好奇,IPv6 Support上的MSDN页面显示了包含名称s6_addrstruct in6_addr,这意味着IPv6版本的IPv4“套接字”结构,而不仅仅是"IPv4结构“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8180882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档