C語言accept()函數:接受socket連線
頭文件:
#include <sys/types.h> #include <sys/socket.h>
定義函數:
int accept(int s, struct sockaddr * addr, int * addrlen);
函數說明:accept()用來接受參數s 的socket 連線. 參數s 的socket 必需先經bind()、listen()函數處理過, 當有連線進來時accept()會返回一個新的socket 處理代碼, 往后的數據傳送與讀取就是經由新的socket處理, 而原來參數s 的socket 能繼續使用accept()來接受新的連線要求. 連線成功時, 參數addr 所指的結構會被系統填入遠程主機的地址數據, 參數addrlen 為scokaddr 的結構長度. 關于機構sockaddr 的定義請參考bind().
返回值:成功則返回新的socket 處理代碼, 失敗返回-1, 錯誤原因存于errno 中.
錯誤代碼:
1、EBADF 參數s 非合法socket 處理代碼.
2、EFAULT 參數addr 指針指向無法存取的內存空間.
3、ENOTSOCK 參數s 為一文件描述詞, 非socket.
4、EOPNOTSUPP 指定的socket 并非SOCK_STREAM.
5、EPERM 防火墻拒絕此連線.
6、ENOBUFS 系統的緩沖內存不足.
7、ENOMEM 核心內存不足.
C語言shutdown()函數:終止socket通信
頭文件:
#include <sys/socket.h>
定義函數:
int shutdown(int s, int how);
函數說明:shutdown()用來終止參數s 所指定的socket 連線. 參數s 是連線中的socket 處理代碼, 參數how有下列幾種情況:
返回值:成功則返回0, 失敗返回-1, 錯誤原因存于errno.
錯誤代碼:
1、EBADF 參數s 不是有效的socket 處理代碼
2、ENOTSOCK 參數s 為一文件描述詞, 非socket
3、ENOTCONN 參數s 指定的socket 并未連線
新聞熱點
疑難解答
圖片精選