-- 作者:wangxinxin
-- 發(fā)布時間:2010-12-10 14:11:31
-- 討論 Setsockopt選項_開發(fā)語言_C/C++開發(fā)_編程指南
SO_RCVBUF 接收緩沖區(qū)大小 int 設(shè)置接收緩沖區(qū) 保留大小 與 SO_MAX_MSG_SIZE 或TCP滑動窗口無關(guān) 如果一般發(fā)送 包很大很頻繁 那么解決這個選項
SO_SNDBUF 發(fā)送緩沖區(qū)大小 int 設(shè)置發(fā)送緩沖區(qū) 保留大小 與 SO_MAX_MSG_SIZE 或TCP滑動窗口無關(guān) 如果一般發(fā)送 包很大很頻繁 那么解決這個選項 每個套接口都 一個發(fā)送緩沖區(qū)和一個接收緩沖區(qū) 接收緩沖區(qū)被TCP和UDP用來將接收到 數(shù)據(jù)一直保存到由解決進(jìn)程來讀 TCP:TCP通告另一端 窗口大小 TCP套接口接收緩沖區(qū)不可能溢出 因為對方不允許發(fā)出超過所通告窗口大小 數(shù)據(jù) 這就 TCP 流量控制 如果對方無視窗口大小而發(fā)出了超過宙口大小 數(shù)據(jù) 則接 收方TCP將丟棄它 UDP:當(dāng)接收到 數(shù)據(jù)報價裝不進(jìn)套接口接收緩沖區(qū)時 此數(shù)據(jù)報價就被丟棄 UDP 沒 流量控制 ;快 發(fā)送者可以很容易地就淹沒慢 接收者 導(dǎo)致接收方 UDP丟棄數(shù)據(jù)報價
SO_RCVLOWAT 接收緩沖區(qū)下限 int SO_SNDLOWAT 發(fā)送緩沖區(qū)下限 int 每個套接口都 一個接收低潮限度和一個發(fā)送低潮限度 它們 函數(shù)selectt解決 接收低潮限度 讓select返回“可讀”而 套接口接收緩沖區(qū)中必須 數(shù)據(jù)總量 ——對于一個TCP或UDP套接口 此值缺省為1 發(fā)送低潮限度 讓select返回“可寫” 而 套接口發(fā)送緩沖區(qū)中必須 可用空間 對于TCP套接口 此值常缺省為2048 對于UDP解決低潮限度 由于其發(fā)送緩沖區(qū)中可用空間 字節(jié)數(shù) 從不變化 只要 UDP套接口發(fā)送緩沖區(qū)大小大于套接口 低潮限度 這樣 UDP套接口就總 可寫 UDP沒 發(fā)送緩沖區(qū) 只 發(fā)送緩沖區(qū) 大小
SO_RCVTIMEO 接收超時 struct timeval SO_SNDTIMEO 發(fā)送超時 struct timeval SO_REUSERADDR 允許重用本地地址和端口 int 充許綁定已被解決 地址(或端口號) 可以辦法bind man
SO_EXCLUSIVEADDRUSE 獨占模式解決端口 就 不充許和其它源代碼解決SO_REUSEADDR共享 解決某一端口 確定多重綁定解決誰 時候 根據(jù)一條原則 誰 指定最明確則將包遞交給誰 而且沒 權(quán)限之分 也就 說低級權(quán)限 用戶 可以重綁定 高級權(quán)限如服務(wù)啟動 端口上 這 非常重大 一個安全隱患 如果不想讓自己源代碼被監(jiān)聽 那么解決這個選項
SO_TYPE 獲得套接字類型 int SO_BS數(shù)碼相機(jī)OMPAT 與BSD系統(tǒng)兼容 int
========================================================================== IPPROTO_IP -------------------------------------------------------------------------- IP_HDRINCL 數(shù)據(jù)包中包含IP首部 int 這個選項常用于黑客技術(shù)中 隱藏自己 IP地址
IP_OPTINOS IP首部選項 int IP_TOS 服務(wù)類型 IP_TTL 生存時間 int
以下IPV4選項用于組播 IPv4 選項 數(shù)據(jù)類型 描 述 IP_ADD_MEMBERSHIP struct ip_mreq 加入到組播組中 IP_ROP_MEMBERSHIP struct ip_mreq 從組播組中退出 IP_MULTICAST_IF struct ip_mreq 指定提交組播報價文 接口 IP_MULTICAST_TTL u_char 指定提交組播報價文 TTL IP_MULTICAST_LOOP u_char 使組播報價文環(huán)路 效或無效 頭文件中定義了ip_mreq結(jié)構(gòu): [code:1:63724de67f] struct ip_mreq { struct in_addr imr_multiaddr; /* IP multicast address of group */ struct in_addr imr_interface; /* local IP address of interface */ }; [/code:1:63724de67f] 若進(jìn)程要加入到一個組播組中 用soket setsockopt()函數(shù)發(fā)送該選項 該選項類型 ip_mreq結(jié)構(gòu) 它 第一個字段imr_multiaddr指定了組播組 地址 第二個字段imr_interface指定了接口 IPv4地址 IP_DROP_MEMBERSHIP 該選項用來從某個組播組中退出 數(shù)據(jù)結(jié)構(gòu)ip_mreq 解決辦法與上面相同 IP_MULTICAST_IF 該選項可以修改網(wǎng)絡(luò)接口 結(jié)構(gòu)ip_mreq中定義新 接口 IP_MULTICAST_TTL 設(shè)置組播報價文 數(shù)據(jù)包 TTL(生存時間) 默認(rèn)值 1 表示數(shù)據(jù)包只能 本地 子網(wǎng)中傳送 IP_MULTICAST_LOOP 組播組中 成員自己也會收到它向本組發(fā)送 報價文 這個選項用于抉擇 否激活這種狀態(tài)
|