C說話設置和獲得socket狀況的相干函數用法。本站提示廣大學習愛好者:(C說話設置和獲得socket狀況的相干函數用法)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話設置和獲得socket狀況的相干函數用法正文
C說話setsockopt()函數:設置socket狀況
頭文件:
#include <sys/types.h> #include <sys/socket.h>
界說函數:
int setsockopt(int s, int level, int optname, const void * optval, ,socklen_toptlen);
函數解釋:setsockopt()用來設置參數s 所指定的socket 狀況. 參數level 代表欲設置的收集層, 普通設成SOL_SOCKET 以存取socket 層. 參數optname 代表欲設置的選項, 有以下幾種數值:
SO_DEBUG 翻開或封閉排錯形式
SO_REUSEADDR 許可在bind ()進程中當地地址可反復應用
SO_TYPE 前往socket 形狀.
SO_ERROR 前往socket 已產生的毛病緣由
SO_DONTROUTE 送出的數據包不要應用路由裝備來傳輸.
SO_BROADCAST 應用播送方法傳送
SO_SNDBUF 設置送出的暫存區年夜小
SO_RCVBUF 設置吸收的暫存區年夜小
SO_KEEPALIVE 按期肯定連線能否已終止.
SO_OOBINLINE 當吸收到OOB 數據時會立時送至尺度輸出裝備
SO_LINGER 確保數據平安且靠得住的傳送出去.
參數 optval 代表欲設置的值, 參數optlen 則為optval 的長度.
前往值:勝利則前往0, 如有毛病則前往-1, 毛病緣由存於errno.
附加解釋:
1、EBADF 參數s 並不是正當的socket 處置代碼
2、ENOTSOCK 參數s 為一文件描寫詞, 非socket
3、ENOPROTOOPT 參數optname 指定的選項不准確.
4、EFAULT 參數optval 指針指向沒法存取的內存空間.
C說話getsockopt()函數:獲得socket 狀況
頭文件:
#include <sys/types.h> #include <sys/socket.h>
界說函數:
int getsockopt(int s, int level, int optname, void* optval, socklen_t* optlen);
函數解釋:getsockopt()會將參數s 所指定的socket 狀況前往. 參數optname 代表欲獲得何種選項狀況, 而參數optval 則指向欲保留成果的內存地址, 參數optlen 則為該空間的年夜小. 參數level、optname 請參考setsockopt().
前往值:勝利則前往0, 如有毛病則前往-1, 毛病緣由存於errno
毛病代碼:
1、EBADF 參數s 並不是正當的socket 處置代碼
2、ENOTSOCK 參數s 為一文件描寫詞, 非socket
3、ENOPROTOOPT 參數optname 指定的選項不准確
4、EFAULT 參數optval 指針指向沒法存取的內存空間
典范
#include <sys/types.h> #include <sys/socket.h> main() { int s; int optval; int optlen = sizeof(int); if((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) perror("socket"); getsockopt(s, SOL_SOCKET, SO_TYPE, &optval, &optlen); printf("optval = %d\n", optval); close(s); }
履行:
optval = 1 //SOCK_STREAM 的界說恰是此值