詳解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ù)處理過, 當有連線進來時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)文章
Qt數(shù)據(jù)庫應(yīng)用之實現(xiàn)csv文件轉(zhuǎn)xls
這篇文章主要為大家詳細介紹了如何利用Qt實現(xiàn)csv文件轉(zhuǎn)xls功能,文中的示例代碼講解詳細,對我們學(xué)習(xí)或工作有一定參考價值,需要的可以了解一下2022-06-06
詳解C++虛函數(shù)中多態(tài)性的實現(xiàn)原理
C++是一種面向?qū)ο蟮木幊陶Z言,在C++中,虛函數(shù)是實現(xiàn)多態(tài)性的關(guān)鍵。本文就來探討一下C++虛函數(shù)中多態(tài)性的實現(xiàn)原理及其在面向?qū)ο缶幊讨械膽?yīng)用吧2023-05-05

