有多種方法獲取和設定影響套接字的選項:
1.getsockopt和setsockopt函式
2.fcntl函式
3.ioctl函式
getsockopt和setsockopt函式
這兩個函式僅用於套接字
#include int getsockopt(int sockfd,int level,int option,void *restrict optval,socklen_t restrict optlen);getsocksopt把以獲取的當前值存放在*optval中。*optval的大小由最後乙個引數指定。int setsockopt(int sockfd,int level,int option,const
void *optval,socklen_t optlen);
//均返回:若成功則為0,若出錯則為-1
下面三個圖彙總了可由getsockopt或由setsockopt設定的選項。
套接字選擇粗分為兩大基本型別:
一是啟用或禁止某個特性的二元選項(標誌選項)
二是取得並返回我們可以設定或檢查特定值的選項(值選項)
圖中標有「標誌」的列指出乙個選項是否為標誌選項。當給這些標誌選項呼叫getsockopt函式時,*optval是乙個整數:0代表相應選項被禁止,不為0代表相應選項被啟用。
fcntl函式
下圖彙總了由fcntl、ioctl和路由套接字執行的不同操作
fcntl函式提供了與網路程式設計相關的如下特性
1.非阻塞式i/o。通過使用f_setfl命令設定o_nonblock檔案狀態標誌,將套接字設定為非阻塞式
2.訊號驅動式i/o。通過使用f_setfl命令設定o_async檔案狀態標誌,把乙個套接字設定成一旦其狀態發生改變,核心就產生乙個sigio訊號
3.f_setown命令允許我們指定用於接收sigio和sigurg訊號的套接字屬主(程序id或程序組id)
#include int fcntl(int fd,int cmd,.../*關於fcntl函式可以檢視以前apue的學習筆記int arg
*/);
//返回:若成功則取決於cmd,若出錯則為-1
UNP學習筆記(第七章 套接字選項)
有多種方法獲取和設定影響套接字的選項 1.getsockopt和setsockopt函式 2.fcntl函式 3.ioctl函式 getsockopt和setsockopt函式 這兩個函式僅用於套接字 include int getsockopt int sockfd,int level,int o...
第七章 套接字選項
第七章 套接字選項 先介紹改變和獲取套接字選項的兩個函式 intsetsockopt int fd,int level,int optname,const void optval,socklen t optlen intgetsockopt int fd,int level,int optname,...
UNP 學習筆記 第七章
getsockopt把對套接字的操作放入到optval中 setsockopt對套接字設定操作 開啟 禁止廣播 饒過底層協議的正常路由機制.設定此選項後,2小時內無資料報交換的話,tcp會檢測對端是否存活.接受視窗和傳送視窗 讓select返回可讀 可寫時套接字接受緩衝區中所需的資料量設定超時值 重...