UNP學習筆記(第七章 套接字選項)

2021-07-04 13:01:29 字數 1440 閱讀 4658

有多種方法獲取和設定影響套接字的選項:

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);

int setsockopt(int sockfd,int level,int option,const

void *optval,socklen_t optlen);

//均返回:若成功則為0,若出錯則為-1

getsocksopt把以獲取的當前值存放在*optval中。*optval的大小由最後乙個引數指定。

下面三個圖彙總了可由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,.../*

int arg

*/);

//返回:若成功則取決於cmd,若出錯則為-1

關於fcntl函式可以檢視以前apue的學習筆記

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返回可讀 可寫時套接字接受緩衝區中所需的資料量設定超時值 重...