smwikipedia
smwikipedia

Reputation: 64205

What does the "s" mean in the structure?

Here's a simple question. What's the meaning of the leading letter "s" in the sin_family, sin_port, sin_addr and sin_zero?

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

Thanks.

Upvotes: 15

Views: 1695

Answers (3)

Hans Passant
Hans Passant

Reputation: 941407

This comes from Berkeley, back when LSD was still legal. So very obvious in their naming choices :/

All kidding aside, this dates back to very early K&R C where structure members didn't have their own namespace. Which required you to come up with distinct names for the structure members that wouldn't collide with identifiers in the global namespace. Painful. Prefixing the names with an abbreviation of the structure name was the common approach.

Thus "sockaddr_in" becomes "sin".

Note how enums still have this problem today, not untypically solved the same way.

Upvotes: 35

John Kugelman
John Kugelman

Reputation: 361595

sin is repeating the name of the sockaddr_in structure, i.e. Socket INternet.

Upvotes: 7

bdonlan
bdonlan

Reputation: 231113

"sin" stands for "Socket INternet" in this context.

Upvotes: 5

Related Questions