2011-11-22 8 views
0

使用getaddrinfo方法時,我提供了一個IP地址和端口號。我在out變量中得到一個鏈表。它工作正常。但我在這裏有一個概念上的疑問。當我同時提供IP地址和端口時,它是如何返回這麼多可能的套接字的?不應該只有一個?使用getaddrinfo方法的概念性查詢

回答

0

從的getaddrinfo手冊頁:

有幾個原因,爲什麼鏈表可能有不止一個 addrinfo中的結構,包括:網絡主機是多宿主,通過多種協議 訪問(比如他們AF_INET和AF_INET6); 或相同的服務可用於多種套接字類型(例如,一個 SOCK_STREAM地址和另一個SOCK_DGRAM地址)。 通常,應用程序應嘗試使用返回它們的訂單號碼爲 的地址。 getaddrinfo()中使用的排序功能在RFC 3484中定義;可以通過編輯/etc/gai.conf(自glibc 2.5之後可用)來調整訂單,以便編輯特定系統的 。

+0

明白了。但是返回的結構與sockaddr_storage不兼容。我的問題是關於這個結構。 – Nanda