socket 相关函数
所有函數頭文件:
#include <sys/types.h> #include <sys/socket.h>一、基本函數
(1)套接字創建函數:
int socket(int domain, int type, int protocol);參數 :
domain :IP 版本: AF_INET;
type :socket 內部協議:SOCK_STREAM;
protocol :協議號,選 0 表示采用默認協議即流式協議;
返回值:
成功返回指向新創建的socket 的文件描述符,失敗返回-1。
(2)綁定函數:bind:socket 綁定 IP 和端口號
參數:
sockfd:socket 文件描述符,socket 創建函數的返回值;
addr:傳入參數,構造出 IP 地址加端口號的結構體地址,需要傳入 struct sockaddr *,而我們使用 struct sockaddr_in 類型,需要強轉;
addrlen:sizeof(addr)長度。
返回值:
成功返回 0,失敗返回 -1。
(3)監聽函數:listen:指定監聽上限數,即同時允許多少個客戶端與我建立連接
參數:
sockfd:socket 文件描述符,socket 創建函數的返回值;
backlog:排隊建立 3 次握手隊列和剛剛建立 3 次握手隊列的連接數和,上限是 128;
返回值:成功返回 0,失敗返回 -1。
(4)接收函數:accept:阻塞等待用戶段發起連接,獲得客戶端的信息; 通過返回值,創建與客戶通信的 socket 文件描述符。
參數:
sockdf:socket 文件描述符,socket 創建函數的返回值
addr: 傳出參數,返回連接客戶端地址信息,內含客戶端的 IP 地址和端口號
addrlen:傳入傳出參數( 值 – 結果 )
傳入結構體原始大小 sizeof(addr),傳出真正接收到的結構體的大小
返回值:
成功返回一個新的 socket 文件描述符,指向客戶端的 socket,用于和客戶端通信;失敗返回 -1。
注意:跟客戶進行通信的套接字不是服務器通過 socket 函數創建的那個套接字。
(5)連接函數:connect :客戶端連接服務器
參數:
sockdf:socket 文件描述符(客戶端創建的套接字);
addr:傳入參數,指定服務器端地址信息,含 IP 地址和端口號;
addrlen:傳入參數,傳入服務器 sizeof(addr)大小。
返回值:
成功返回 0,失敗返回-1,設置 errno。
二、TCP 客戶端和服務器建立流程
總結
以上是生活随笔為你收集整理的socket 相关函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sockaddr_in 结构体
- 下一篇: 多路访问链路和协议