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