第四十六章、socket函數

這一章開始我們介紹編寫網絡程序時使用的基本套接字函數,我每天介紹一個函數,慢慢學習。

這一章先看一下第一個函數——socket函數:

我們先來看一下這個函數的原型:int socket (int __domain, int __type, int __protocol)

它的作用是創建一個套接字描述符。接下來我們來看下它需要哪些參數:

1、domain指定要創建的套接字的協議族,協議族有很多,常用的協議族有AF_INET、AF_INET6、AF_LOCAL(或稱AF_UNIX,Unix域Socket)、AF_ROUTE等。協議族決定了socket的地址類型,在通信中必須採用對應的地址,如AF_INET決定了要用ipv4地址(32位的)與端口號(16位的)的組合、AF_UNIX決定了要用一個絕對路徑名作為地址。

2、type指定套接字類型,常用的套接字類型有:

SOCK_STREAM = 1, /* Sequenced, reliable, connection-based

byte streams. */:面向連接的順序可靠的字節流

SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams

of fixed maximum length. */:無連接、不可靠的數據報

SOCK_RAW = 3, /* Raw protocol interface. */:原始接口套接字,只對INTERNET協議有效,可以用來直接訪問IP協議

3、protocol指定使用哪種協議。常用協議有IPPROTO_TCP、IPPROTO_UDP、IPPROTO_STCP、IPPROTO_TIPC等,分別對應TCP傳輸協議、UDP傳輸協議、STCP傳輸協議、TIPC傳輸協議。

注意:1.type和protocol不可以隨意組合,如SOCK_STREAM不可以跟IPPROTO_UDP組合。當第三個參數為0時,會自動選擇第二個參數類型對應的默認協議。

我們看這個socket函數,它有一個int類型的返回值,那麼它在成功執行時,返回的是正整數,也就是返回一個創建成功的套接字描述符,用來標識這個套接字。失敗的話就是返回-1。

第四十六章、socket函數

好了今天就到這裡。

現在學習網絡編程,那麼我推薦下面這本書,大家可以看看。

第四十六章、socket函數

第四十六章、socket函數

第四十六章、socket函數

第四十六章、socket函數

第四十六章、socket函數

第四十六章、socket函數

第四十六章、socket函數

第四十六章、socket函數

第四十六章、socket函數

第四十六章、socket函數

第四十六章、socket函數

第四十六章、socket函數


分享到:


相關文章: