结构中的“s”是什么意思?

时间:2011-02-11 14:23:07

标签: c unix network-programming posix

这是一个简单的问题。 sin_family,sin_port,sin_addr和sin_zero中主要字母“ s ”的含义是什么?

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
};

感谢。

3 个答案:

答案 0 :(得分:33)

这来自伯克利,当LSD仍然合法时。在命名选择中非常明显:/

除了开玩笑之外,这可以追溯到很早的K& R C,其中结构成员没有自己的命名空间。这要求您为结构成员提供不会与全局命名空间中的标识符冲突的不同名称。痛苦。使用结构名称的缩写来对名称进行前缀是常用方法。

因此“sockaddr_in”变成“罪”。

请注意枚举今天仍然存在这个问题,而不是以同样的方式解决这个问题。

答案 1 :(得分:6)

sin正在重复sockaddr_in结构的名称,即 S ocket IN ternet。

答案 2 :(得分:5)

“sin”在这种情况下代表“Socket INternet”。