2011-02-11 29 views
14

這是一個簡單的問題。 sin_family,sin_port,sin_addr和sin_zero中主要字母「s」的含義是什麼?「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 
}; 

謝謝。

+2

可能用於* s * ockaddr? – Benoit 2011-02-11 14:27:02

回答

32

這來自伯克利,當時LSD還合法。所以在他們的命名選擇中非常明顯:/

所有的開玩笑,這可以追溯到很早K & R C其中結構成員沒有自己的名稱空間。這就要求您爲結構成員提供不會與全局名稱空間中的標識符相沖突的獨特名稱。痛苦。用名稱縮寫結構名稱前綴是常用的方法。

因此「sockaddr_in」變成「罪」。

請注意今天enums如何仍然有這個問題,而不是非典型地解決同樣的問題。

+0

謝謝,它很有說服力。順便說一下,什麼是LSD? – smwikipedia 2011-02-11 17:08:15

5

「sin」在此上下文中代表「Socket INternet」。

6

sin被重複sockaddr_in結構的名稱,即小號 OCKET IN國際互聯網。

相關問題