詳解C語言中accept()函數(shù)和shutdown()函數(shù)的使用
C語言accept()函數(shù):接受socket連線
頭文件:
#include <sys/types.h> #include <sys/socket.h>
定義函數(shù):
int accept(int s, struct sockaddr * addr, int * addrlen);
函數(shù)說明:accept()用來接受參數(shù)s 的socket 連線. 參數(shù)s 的socket 必需先經(jīng)bind()、listen()函數(shù)處理過, 當(dāng)有連線進來時accept()會返回一個新的socket 處理代碼, 往后的數(shù)據(jù)傳送與讀取就是經(jīng)由新的socket處理, 而原來參數(shù)s 的socket 能繼續(xù)使用accept()來接受新的連線要求. 連線成功時, 參數(shù)addr 所指的結(jié)構(gòu)會被系統(tǒng)填入遠程主機的地址數(shù)據(jù), 參數(shù)addrlen 為scokaddr 的結(jié)構(gòu)長度. 關(guān)于機構(gòu)sockaddr 的定義請參考bind().
返回值:成功則返回新的socket 處理代碼, 失敗返回-1, 錯誤原因存于errno 中.
錯誤代碼:
1、EBADF 參數(shù)s 非合法socket 處理代碼.
2、EFAULT 參數(shù)addr 指針指向無法存取的內(nèi)存空間.
3、ENOTSOCK 參數(shù)s 為一文件描述詞, 非socket.
4、EOPNOTSUPP 指定的socket 并非SOCK_STREAM.
5、EPERM 防火墻拒絕此連線.
6、ENOBUFS 系統(tǒng)的緩沖內(nèi)存不足.
7、ENOMEM 核心內(nèi)存不足.
C語言shutdown()函數(shù):終止socket通信
頭文件:
#include <sys/socket.h>
定義函數(shù):
int shutdown(int s, int how);
函數(shù)說明:shutdown()用來終止參數(shù)s 所指定的socket 連線. 參數(shù)s 是連線中的socket 處理代碼, 參數(shù)how有下列幾種情況:
- how=0 終止讀取操作.
- how=1 終止傳送操作
- how=2 終止讀取及傳送操作
返回值:成功則返回0, 失敗返回-1, 錯誤原因存于errno.
錯誤代碼:
1、EBADF 參數(shù)s 不是有效的socket 處理代碼
2、ENOTSOCK 參數(shù)s 為一文件描述詞, 非socket
3、ENOTCONN 參數(shù)s 指定的socket 并未連線
- C語言設(shè)置和取得socket狀態(tài)的相關(guān)函數(shù)用法
- C語言中socket相關(guān)網(wǎng)絡(luò)編程函數(shù)小結(jié)
- C語言中經(jīng)socket接收數(shù)據(jù)的相關(guān)函數(shù)詳解
- C語言中send()函數(shù)和sendto()函數(shù)的使用方法
- C語言putenv()函數(shù)和getenv()函數(shù)的使用詳解
- C語言中g(shù)etopt()函數(shù)和select()函數(shù)的使用方法
- 詳解C語言中的ttyname()函數(shù)和isatty()函數(shù)的用法
- C語言的isatty函數(shù)和ttyname函數(shù)以及sendmsg函數(shù)用法
- C語言fillpoly函數(shù)詳解
相關(guān)文章
關(guān)于C++靜態(tài)數(shù)據(jù)成員的實現(xiàn)講解
今天小編就為大家分享一篇關(guān)于關(guān)于C++靜態(tài)數(shù)據(jù)成員的實現(xiàn)講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12CMake 生成靜態(tài)庫與動態(tài)庫的方法步驟
本文主要介紹了CMake 生成靜態(tài)庫與動態(tài)庫的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06詳解C語言內(nèi)核中的鏈表與結(jié)構(gòu)體
Windows內(nèi)核中是無法使用vector容器等數(shù)據(jù)結(jié)構(gòu)的,當(dāng)我們需要保存一個結(jié)構(gòu)體數(shù)組時,就需要使用內(nèi)核中提供的專用鏈表結(jié)構(gòu)。本文分享了幾個內(nèi)核中使用鏈表存儲多個結(jié)構(gòu)體的通用案例,希望對你有所幫助2022-09-09