AF_UNSPEC、AF_INET和AF_INET6之間的關(guān)系

創(chuàng)建套接字

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

s = socket(family, type, protocol);

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

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


AF_APPLETALK: Apple Computer Inc. Appletalk 網(wǎng)絡(luò)

AF_INET6: Internet IPv6 和 IPv4 系列

AF_INET: 僅 Internet IPv4 系列

AF_PUP: Xerox Corporation PUP internet

AF_UNIX: UNIX 文件系統(tǒng)

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

以下示例創(chuàng)建 Internet 系列的流套接字:

s = socket(AF_INET6, SOCK_STREAM, 0);

此調(diào)用生成流套接字。TCP 協(xié)議提供底層通信。在大多數(shù)情況下,將 protocol參數(shù)設(shè)置為缺省值 0??梢灾付ㄈ笔f(xié)議之外的其他協(xié)議,如高級套接字主題中所述。

通俗來講,即 ai_family參數(shù)指定調(diào)用者期待返回的套接口地址結(jié)構(gòu)的類型。
它的值包括三種:AF_INET,AF_INET6和AF_UNSPEC
如果指定AF_INET,那么函數(shù)就不能返回任何IPV6相關(guān)的地址信息;
如果僅指定了AF_INET6,則就不能返回任何IPV4地址信息。
AF_UNSPEC則意味著函數(shù)返回的是適用于指定主機(jī)名和服務(wù)名且適合任何協(xié)議族的地址。

如果某個主機(jī)既有AAAA記錄(IPV6)地址,同時又有A記錄(IPV4)地址,那么AAAA記錄將作為sockaddr_in6結(jié)構(gòu)返回,而A記錄則作為sockaddr_in結(jié)構(gòu)返回;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 套接字(Socket) 伯克利套接字(BSD Socket) 套接字(socket)是一個抽象層,應(yīng)用程序可以通過...
    夙小葉閱讀 2,093評論 0 0
  • 網(wǎng)絡(luò)編程 一.楔子 你現(xiàn)在已經(jīng)學(xué)會了寫python代碼,假如你寫了兩個python文件a.py和b.py,分別去運(yùn)...
    go以恒閱讀 2,238評論 0 6
  • 套接字是網(wǎng)絡(luò)通信的基石,是網(wǎng)絡(luò)通信的基本構(gòu)建,最初是由加利福利亞大學(xué)Berkeley分校為UNIX開發(fā)的網(wǎng)絡(luò)通信編...
    Super超人閱讀 4,734評論 0 26
  • 我們深諳信息交流的價值,那網(wǎng)絡(luò)中進(jìn)程之間如何通信,如我們每天打開瀏覽器瀏覽網(wǎng)頁時,瀏覽器的進(jìn)程怎么與web服務(wù)器通...
    紫色冰雨閱讀 1,072評論 0 4
  • 繪圖/理智 臨摹明·沈周《全真館》
    理智Li_zhi的智慧莊園閱讀 276評論 0 2

友情鏈接更多精彩內(nèi)容