Linux網絡編程基礎:socket函數

socket函數

1)頭文件:
#include < sys/types.h >
#include < sys/socket.h >
2)函數定義形式

int socket(int domain, int type, int protocol);

函數功能

1)創建一個套接字文件,然後以文件的形式進行數據通信
2)成功:返回套接字文件描述符
3)失敗:返回 -1

函數參數

domain參數

1)用於指定採用的協議族及其對應的ip地址格式
2)協議族與ip地址格式對應且每個協議族的ip地址格式都不相同
3)所以一個參數即可確定要採用的協議族以及ip地址格式
例如:
將domain參數設置爲 PF_INET,就是指定使用IPV4版本的TCP/IP協議族

type參數

1)套接字類型,用於在協議族確定的前提下進一步指定所採用的子協議
如要採用TCP/IP協議族中的TCP協議
2)常見設置值包括:
SOCK_STREAM:表示使用有序的、面向連接的、可靠的雙向通信的字節流通信(如當domain參數設置爲PF_INET時就表示使用TCP/IP協議族中的TCP協議)
SOCK_DGRAM:表示使用不連接、不可靠、固定長度的數據報通信(如當domain參數設置爲PF_INET時就表示使用TCP/IP協議族中的UDP協議)
SOCK_RDM:表示想使用原始網絡通信(如當domain參數設置爲PF_INET時就表示直接使用TCP/IP協議族中的ip協議)
SOCK_NONBLOCK:用於將socket函數返回的文件描述符指定爲非阻塞,可以和上面的宏使用 ’ | ’ 運算(如採用SOCK_STREAM | SOCK_NONBLOCK表示使用TCP協議且是非阻塞)
SOCK_CLOEXEC:一旦進程exec執行新程序時,自動關閉socket返回的套接字文件描述符

protocol參數

1)用於指定協議號
2)當設置爲0時,則指定使用由前兩的參數指定的具體協議
3)當前兩個參數指定的協議有好幾個,則需要具體的協議號來指定的具體的協議

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章