2011-02-11 12 views
14

Ecco una semplice domanda. Qual è il significato della lettera principale "s" in sin_family, sin_port, sin_addr e sin_zero?Cosa significa "s" nella struttura?

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

Grazie.

+2

probabilmente per * s * ockaddr? – Benoit

risposta

32

Questo viene da Berkeley, indietro quando LSD era ancora legale. Quindi molto ovvio nelle loro scelte di denominazione:/

Tutti scherzando, questo risale ai primi anni K & R C dove i membri della struttura non avevano il proprio spazio dei nomi. Il che ha richiesto di creare nomi distinti per i membri della struttura che non collidessero con gli identificatori nello spazio dei nomi globale. Doloroso. Il prefisso dei nomi con un'abbreviazione del nome della struttura era l'approccio comune.

Così "sockaddr_in" diventa "peccato".

Nota come gli enummi hanno ancora oggi questo problema, non risolto atipicamente nello stesso modo.

+0

Grazie, è convincente. A proposito, cos'è l'LSD? – smwikipedia

+7

Una droga sintetica che consente un volo prolungato non alimentato. http://en.wikipedia.org/wiki/Lsd –

+1

Grazie ragazzi, ora ne so troppo. :) – smwikipedia

5

"sin" sta per "Socket INternet" in questo contesto.

6

sin sta ripetendo il nome della struttura sockaddr_in, cioè S ocket IN ternet.

Problemi correlati