亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Unix > 正文

UNIX網絡編程讀書筆記:套接口選項

2024-06-28 13:27:27
字體:
來源:轉載
供稿:網友
UNIX網絡編程讀書筆記:套接口選項紅心概述

有很多方法來獲取和設置影響套接口的選項:

  • getsockopt和setsockopt函數
  • fcntl函數
  • ioctl函數
紅心getsockopt和setsockopt函數

這兩個函數僅用于套接口。

#include <sys/socket.h>int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t *optlen);返回值:0——成功,-1——出錯

其中,

sockfd必須指向一個打開的套接口描述字;

level(級別)指定系統中解釋選項的代碼:或為通用套接口代碼,或為某個特定于協議的代碼(例如ipv4、IPv6、TCP或SCTP)。

optval是一個指向變量(*optval)的指針,setsockopt從*optval中取得選項待設置的新值,getsockopt則把已獲取的選項當前值存放到*optval中。

optlen指定*optval的大小,它對于setsockopt是一個值參數,對于getsockopt是一個值-結果參數。

套接口選項粗分為兩大基本類型:

(1)標志選項:開啟或禁止某個特性的二元選項。

(2)值選項:取得并返回我們可以設置或檢查的特定值的選項。

*optval的值為0表示禁止選項,不為0表示開啟選項。

紅心fcntl函數

fcntl函數提供了與網絡編程相關的如下特性:

  1. 非阻塞I/O。通過使用F_SETFL命令設置O_NONBLOCK文件狀態標志,我們可以把一個套接口設置為非阻塞型。
  2. 信號驅動I/O。通過使用F_SETFL命令設置O_ASYNC文件狀態標志,我們可以把一個套接口設置成一旦其狀態發生變化,內核就產生一個SIGIO信號。
  3. F_SETOWN命令允許我們指定用于接收SIGIO和SIGURG信號的套接口屬主(進程ID或進程組ID)。其中SIGIO信號是套接口被設置為信號驅動I/O型后產生的,SIGURG信號是在新的帶外數據到達套接口時產生的。F_GETOWN命令返回套接口的當前屬主。
#include <fcntl.h>int fcntl(int fd, int cmd, ... /* int arg */);返回值:依賴于cmd參數——成功,-1——出錯

每種描述字(包括套接口描述字)都有一組由F_GETFL命令獲取或由F_SETFL命令設置的文件標志。其中影響套接口描述字的兩個標志是:

O_NONBLOCK 非阻塞I/O

O_ASYNC 信號驅動I/O

燈泡注意燈泡

設置某個文件狀態標志的唯一正確的方法是:先取得當前標志,與新標志邏輯或后再設置標志。例如,使用fcntl開啟非阻塞I/O的典型代碼是:

int flags;if( (flags = fcntl(fd, F_GETFL, 0)) < 0)    err_sys("F_GETFL error");flags |= O_NONBLOCK;if(fcntl(fd, F_SETFL, flags) < 0)    err_sys("F_SETFL error");
紅心信號SIGIO和SIGURG的獨特之處

信號SIGIO和SIGURG與其他信號的不同之處在于,這兩個信號僅在已使用F_SETOWN命令給相關套接口指派了屬主后才會產生。

F_SETOWN命令的整數類型arg參數既可以是一個正整數,指出接收信號的進程ID,也可以是一個負整數,其絕對值指出接收信號的進程組ID。

F_GETOWN命令把套接口屬主作為fcntl函數的返回值返回,它既可以是進程ID(一個正的返回值),也可以是進程組ID(一個除-1以外的負值)。

指定接收信號的套接口屬主為一個進程或一個進程組的差別在于:前者僅導致單個進程接收信號,而后者則導致整個進程組中的所有進程(也許不止一個進程)接收信號。

使用socket函數新創建的套接口并沒有屬主。然而如果一個新的套接口是從一個監聽套接口創建來的,那么套接口屬主將由已連接套接口從監聽套接口繼承而來。

紅心最常用的套接口選項

燈泡SO_KEEPALIVE

給一個TCP套接口設置保持存活(keep-alive)選項后,如果2小時內在該套接口的任一方向上都沒有數據交換,TCP就自動給對端發送一個保持存活探測分節(keep-alive PRobe)。這是一個對端必須響應的分節。

本選項的目的是檢測對端主機是否崩潰或變得不可達。

本選項一般由服務器使用,不過客戶也可以使用。

服務器使用本選項是因為它們花大部分時間阻塞在等待穿越TCP連接的輸入上,也就是說在等待客戶的請求。然而如果客戶主機連接掉線、電源掉電或系統崩潰,服務器進程將永遠不會知道,并將繼續等待永遠不會到達的輸入。我們稱這種情況為半開連接(half-open connection)。保持存活選項將檢測出這些半開連接并終止它們。

燈泡SO_RCVBUF、SO_SNDBUF

每個TCP套接口和SCTP套接口都有一個發送緩沖區和一個接收緩沖區,每個UDP套接口都有一個接收緩沖區。SO_SNDBUF和SO_RCVBUF套接口選項允許我們改變這些緩沖區的大小。對于客戶,SO_RCVBUF選項必須在調用connect之前設置;對于服務器,SO_RCVBUF選項必須在調用listen之前給監聽套接口設置。

燈泡SO_REUSEADDR

SO_REUSEADDR套接口選項為以下四個不同的目的提供服務:

(1)SO_REUSEADDR允許啟動一個監聽服務器并捆綁其眾所周知端口,即使以前建立的將該端口用作它們的本地端口的連接仍存在。

(2)SO_REUSEADDR允許在同一端口上啟動對同一服務器的多個實例,只要每個實例捆綁一個不同的本地IP地址即可。

(3)SO_REUSEADDR允許單個進程捆綁同一端口到多個套接字上,只要每次捆綁指定不同的本地IP地址即可。

(4)SO_REUSEADDR允許完全重復的綁定:當一個IP地址和端口已綁定到某個套接口上時,如果傳輸協議支持,同樣的IP地址和端口可以捆綁到另一個套接口上。一般來說,本特性只支持UDP套接口。

所有TCP服務器都應指定SO_REUSEADDR選項。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩网站免费观看高清| 亚洲亚裔videos黑人hd| 午夜精品久久久久久久99热| 亚洲免费影视第一页| 国产成人在线一区二区| 中文字幕亚洲一区二区三区五十路| 国产日韩av在线| 欧美激情亚洲一区| 黑人欧美xxxx| 久久韩国免费视频| 国产精品h在线观看| 亚洲最大中文字幕| 精品偷拍各种wc美女嘘嘘| 亚洲精品v天堂中文字幕| 亚洲成人激情图| 欧美壮男野外gaytube| 98精品在线视频| 久久久久久久久综合| 日韩av免费在线看| 欧美午夜宅男影院在线观看| 国产福利视频一区二区| 成人精品久久一区二区三区| 欧美精品一区二区三区国产精品| 疯狂欧美牲乱大交777| 欧美在线视频在线播放完整版免费观看| 午夜精品久久久久久99热软件| 2019亚洲日韩新视频| 欧美午夜性色大片在线观看| 国产精品热视频| 亚洲一区二区久久久久久| 亚洲国产精品美女| 一区二区亚洲精品国产| 久久高清视频免费| 日韩av免费在线播放| 欧美一级黑人aaaaaaa做受| 日韩免费在线电影| 欧美—级高清免费播放| 国产精品精品视频一区二区三区| 国产精品久久久久av免费| 欧美激情一区二区三级高清视频| 在线视频日本亚洲性| 性欧美长视频免费观看不卡| 久久99青青精品免费观看| 午夜精品福利电影| 久久久久这里只有精品| 欧美在线视频免费| 51久久精品夜色国产麻豆| 精品久久久久久中文字幕大豆网| 亚洲欧美三级伦理| 一区二区三区视频免费在线观看| 亚洲综合色激情五月| 欧美视频二区36p| 麻豆一区二区在线观看| 日韩在线观看免费高清| 91精品综合久久久久久五月天| 中文字幕成人在线| 在线观看久久av| 日韩欧美精品在线观看| 色久欧美在线视频观看| 奇米影视亚洲狠狠色| 日韩精品一区二区视频| 国产精品久久久久久久app| 国模精品一区二区三区色天香| 国产成人精品一区| 日本久久中文字幕| 欧美自拍大量在线观看| 成人h片在线播放免费网站| 一本大道久久加勒比香蕉| 波霸ol色综合久久| 2020久久国产精品| 色天天综合狠狠色| 91精品国产99久久久久久| 久久久久久久久91| 亚洲欧美精品一区| 伊人久久久久久久久久久| 久久久久久国产精品| 国模精品视频一区二区三区| 亚洲小视频在线观看| 久久久成人精品视频| 亚洲免费福利视频| 国产主播欧美精品| 国产91精品青草社区| 欧美又大又硬又粗bbbbb| 亚洲精品ady| 欧美亚州一区二区三区| 日韩欧美在线观看| 日韩av最新在线观看| 国产精品久久av| 日韩中文在线中文网三级| 欧美精品videosex牲欧美| 992tv在线成人免费观看| 91香蕉电影院| 成人性生交大片免费观看嘿嘿视频| 亚洲男人天堂网站| 国产精品视频网站| 亚洲最新视频在线| 国产成人中文字幕| 精品国产乱码久久久久久虫虫漫画| 国产精品久久久久久av下载红粉| www.日韩免费| 亚洲精品一区二区三区婷婷月| 日韩精品免费综合视频在线播放| 精品国产拍在线观看| 亚洲精品国产拍免费91在线| 奇米一区二区三区四区久久| 欧美国产视频一区二区| 91色视频在线观看| 日本精品一区二区三区在线播放视频| 亚洲国产精品国自产拍av秋霞| 中文字幕日本精品| 亚洲国语精品自产拍在线观看| 91美女片黄在线观看游戏| 国产suv精品一区二区三区88区| 亚洲一区二区免费| 久久久久久高潮国产精品视| 欧美重口另类videos人妖| 国产激情久久久久| 久久久久久噜噜噜久久久精品| 国产亚洲精品激情久久| 日韩精品免费观看| 亚洲剧情一区二区| 精品人伦一区二区三区蜜桃免费| 亚洲福利视频免费观看| 另类天堂视频在线观看| 精品视频久久久| 午夜精品一区二区三区av| 91精品国产一区| 欧美老女人在线视频| 欧美亚洲一区在线| 伊人伊成久久人综合网站| 少妇高潮 亚洲精品| 欧美激情一区二区三级高清视频| 久久精品影视伊人网| 日韩av综合网| 国产美女91呻吟求| 亚洲日本中文字幕| 久久伊人精品视频| 欧美性高跟鞋xxxxhd| 精品人伦一区二区三区蜜桃免费| 久久久久免费精品国产| 91精品91久久久久久| 国产精品免费久久久久久| 亚洲一区二区少妇| 亚洲的天堂在线中文字幕| 亚洲18私人小影院| 国产成人精品a视频一区www| 欧美日韩国产丝袜美女| 精品女同一区二区三区在线播放| 国产噜噜噜噜久久久久久久久| 久久99热精品这里久久精品| 亚洲性猛交xxxxwww| 91高潮精品免费porn| 欧美肥婆姓交大片| 久久久久久有精品国产| 日韩av网站电影| 欧美夫妻性生活xx| 日韩电影大片中文字幕| 精品国产欧美一区二区三区成人| 欧美日韩午夜视频在线观看| 亚洲www永久成人夜色| **欧美日韩vr在线| 欧美大片免费观看| 国产精品爽黄69天堂a| 成人黄色在线播放|