2009-04-16 35 views
6

在做socket編程的addrinfo中的名字,人們總是命名addrinfo中的結構是這樣的:什麼是「暗示」的意思是在Socket編程

struct addrinfo hints; 
// get ready to connect 
status = getaddrinfo("www.example.net", "3490", &hints, &servinfo); 

我想知道它代表什麼更好的理解。

在此先感謝。


感謝您的回答。也許我沒有說清楚。

但我想知道變量名「hints」是否是某些單詞的縮寫?或者它只是「提示」這個詞意味着它只提供一些地址信息,並讓getaddrinfo()函數填充其餘的那些?

回答

5

FreeBSD man page

hints是一個可選的指針結構addrinfo中,如通過定義<netdb.h> ...這種結構可以被用於提供關於插座的類型的提示呼叫者支撐或希望使用。

它被稱爲「提示」,因爲它可以用來提供提示(提示意義上的提示;可能有用但可以忽略的提示)。這表明諸如呼叫者想要什麼協議族(例如IPv4與IPv6),什麼套接字類型(數據報與成形),什麼協議(TCP與UDP)等等。您可以通過NULL進行hints,因此表明你不關心你回來的協議族,套接字類型或協議。

0

struct addrinfo hints;只是一個變量聲明。結構本身在庫中定義,並通過sys/socket.h包含。

2

http://linux.die.net/man/3/getaddrinfo

的提示參數指定優選的插座類型或協議。 NULL提示指定任何網絡地址或協議均可接受。如果此參數不爲NULL,則它指向一個addrinfo結構,其中的ai_family,ai_socktype和ai_protocol成員指定首選套接字類型。 ai_family中的AF_UNSPEC指定任何協議族(例如IPv4或IPv6)。 ai_socktype或ai_protocol中的0指定任何套接字類型或協議都可以接受。 ai_flags成員指定了下面定義的其他選項。多個標誌通過將它們邏輯「或」來指定。提示參數中的所有其他成員必須包含0或一個空指針。

+0

因此,由此可見,示例代碼不正確,如圖所示;它無法實際初始化hints.ai_family字段。 – unwind 2009-04-16 09:35:35

0

它與英文單詞「hints」的含義相同。它是不是縮寫