古詩詞大全網 - 古詩大全 - AF_UNSPEC、AF_INET和AF_INET6之間的關系

AF_UNSPEC、AF_INET和AF_INET6之間的關系

socket(3SOCKET) 調用創建指定系列和指定類型的套接字。

如果未指定協議,則系統將選擇支持所需套接字類型的協議。將返回套接字句柄。套接字句柄即為文件描述符。

family由 sys/socket.h 中定義的壹個常量指定。名為 AF_suite 的常量指定要在解釋名稱時使用的地址格式:

其中,套接字類型在 sys/socket.h中定義。AF_INET6、AF_INET 和 AF_UNIX支持SOCK_STREAM、SOCK_DGRAM 或 SOCK_RAW 這些類型。

以下示例創建 Internet 系列的流套接字:

此調用生成流套接字。TCP 協議提供底層通信。在大多數情況下,將 protocol參數設置為缺省值 0。可以指定缺省協議之外的其他協議,如 高級套接字主題 中所述。

通俗來講,即 ai_family參數指定調用者期待返回的套接口地址結構的類型。

它的值包括三種:AF_INET,AF_INET6和 AF_UNSPEC

如果指定AF_INET,那麽函數就不能返回任何IPV6相關的地址信息;

如果僅指定了AF_INET6,則就不能返回任何IPV4地址信息。

AF_UNSPEC 則意味著函數返回的是適用於指定主機名和服務名且適合任何協議族的地址。

如果某個主機既有AAAA記錄(IPV6)地址,同時又有A記錄(IPV4)地址,那麽AAAA記錄將作為sockaddr_in6結構返回,而A記錄則作為sockaddr_in結構返回;