日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

socket 相关函数

發(fā)布時間:2024/9/30 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 socket 相关函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

所有函數(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 和端口號

int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

參數(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ù),即同時允許多少個客戶端與我建立連接

int listen(int sockfd, int backlog);

參數(shù):
sockfd:socket 文件描述符,socket 創(chuàng)建函數(shù)的返回值;
backlog:排隊建立 3 次握手隊列和剛剛建立 3 次握手隊列的連接數(shù)和,上限是 128;
返回值:成功返回 0,失敗返回 -1。
(4)接收函數(shù):accept:阻塞等待用戶段發(fā)起連接,獲得客戶端的信息; 通過返回值,創(chuàng)建與客戶通信的 socket 文件描述符。

int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

參數(shù):
sockdf:socket 文件描述符,socket 創(chuàng)建函數(shù)的返回值
addr: 傳出參數(shù),返回連接客戶端地址信息,內含客戶端的 IP 地址和端口號
addrlen:傳入傳出參數(shù)( 值 – 結果 )
傳入結構體原始大小 sizeof(addr),傳出真正接收到的結構體的大小
返回值:
成功返回一個新的 socket 文件描述符,指向客戶端的 socket,用于和客戶端通信;失敗返回 -1。
注意:跟客戶進行通信的套接字不是服務器通過 socket 函數(shù)創(chuàng)建的那個套接字。
(5)連接函數(shù):connect :客戶端連接服務器

int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

參數(shù):
sockdf:socket 文件描述符(客戶端創(chuàng)建的套接字);
addr:傳入?yún)?shù),指定服務器端地址信息,含 IP 地址和端口號;
addrlen:傳入?yún)?shù),傳入服務器 sizeof(addr)大小。
返回值:
成功返回 0,失敗返回-1,設置 errno。

二、TCP 客戶端和服務器建立流程

總結

以上是生活随笔為你收集整理的socket 相关函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。