上回主要梳理了TCP和UDP的相關(guān)知識點(diǎn),這一篇主要梳理一些套接字選項(xiàng)撮慨,以作備忘。
套接字選項(xiàng)
-
用于IP層的套接字選項(xiàng)(IPPROTO_IP)
參數(shù) 解釋 IP_ADD_MEMBERSHIP 加入組播(廣播)組。<Br>每個套接字最多可以連接一組IP_ADD_MEMBERSHIPS組柏卤。 IP_ADD_SOURCE_MEMBERSHIP 加入特定于源的組播組省容。
每個套接字最多可以連接一組IP_MAX_MEMBERSHIPS組抖拴。IP_BLOCK_SOURCE 阻止從給定源到給定多播組的數(shù)據(jù)。 IP_UNBLOCK_SOURCE 取消阻止從給定源到給定多播組的數(shù)據(jù)腥椒。 IP_DONTFRAG 設(shè)置或重置IP標(biāo)頭中的do not fragment標(biāo)志阿宅。 IP_DROP_MEMBERSHIP 離開組播(廣播)組。
IP_DROP_SOURCE_MEMBERSHIP 離開特定于源的組播組笼蛛。 IP_MULTICAST_IF 設(shè)置應(yīng)發(fā)送傳出多播數(shù)據(jù)報(bào)的接口洒放。 IP_MULTICAST_IF2 設(shè)置應(yīng)發(fā)送傳出多播數(shù)據(jù)報(bào)的IPV6接口。 IP_MULTICAST_LOOP 指定應(yīng)將 傳出的多播數(shù)據(jù)報(bào)的副本 回傳到發(fā)送主機(jī)滨砍,只要它是多播組的成員即可往湿。 IP_MULTICAST_TTL 在傳出的 多播數(shù)據(jù)報(bào)的IP頭中設(shè)置生存時(shí)間(TTL)榨为。 IP_OPTIONS 設(shè)置IP標(biāo)頭選項(xiàng)。 IP_RECVLCLIFADDR 指示是否應(yīng)返回要接收的數(shù)據(jù)報(bào)的本地接口煌茴。 IP_TOS 在IP標(biāo)頭中設(shè)置服務(wù)類型(TOS)和優(yōu)先級随闺。 IP_TTL 在IP標(biāo)頭中設(shè)置生存時(shí)間(TTL)。 -
用于TCP層的套接字選項(xiàng)(IPPROTO_TCP
參數(shù) 解釋 TCP_KEEPALIVE 指定TCP在將報(bào)文發(fā)送到連接的另一端之前所需要等待的特定于套接字的活動時(shí)間蔓腐。此設(shè)置是特定于套接字矩乐,將用于替代TCP屬性TCOKEEPALV。僅在套接字上啟用了<font color=red>SO_KEEPALIVE</font>時(shí)才會使用它回论。 TCP_NODELAY 指定TCP是否遵循<font color=#35b998>Nagle算法</font> 決定何時(shí)發(fā)送數(shù)據(jù)散罕。Nagle算法代表通過減少必須發(fā)送包的個數(shù)來增加網(wǎng)絡(luò)軟件系統(tǒng)的效率。即盡可能發(fā)送大塊數(shù)據(jù)避免網(wǎng)絡(luò)中充斥著大量的小數(shù)據(jù)塊傀蓉。如果要追求高實(shí)時(shí)性欧漱,需要設(shè)置關(guān)閉Nagle算法;如果需要追求減少網(wǎng)絡(luò)交互次數(shù)葬燎,則設(shè)置開啟Nagle算法误甚。 -
用于套接字層的套接字選項(xiàng)(SOL_SOCKET)
參數(shù) 解釋 SO_ACCEPTECONNABORTED 啟用偵聽套接字,以便在accept()之前重置偵聽backlog上的連接時(shí)谱净,阻塞的accept() 將會返回ECONNABORTED窑邦。 SO_BROADCAST 將消息發(fā)送到廣播地址。
如果目標(biāo)中指定的接口支持廣播數(shù)據(jù)包壕探,則啟用此選項(xiàng)可讓應(yīng)用程序發(fā)送廣播消息冈钦。SO_DEBUG 指定低級別調(diào)試是否處于活動狀態(tài)。 SO_DONTROUTE 繞過標(biāo)準(zhǔn)的路由機(jī)制李请,即不查找路由瞧筛。
根據(jù)目標(biāo)地址的網(wǎng)絡(luò)部分定向到相應(yīng)的網(wǎng)絡(luò)接口。啟用后导盅,此選項(xiàng)允許將數(shù)據(jù)包發(fā)送到直接連接的網(wǎng)絡(luò)(主機(jī)具有接口的網(wǎng)絡(luò))较幌。SO_ERROR 返回套接字上的任何掛起錯誤,并清除錯誤狀態(tài)认轨。
可以使用它來檢查連接的數(shù)據(jù)報(bào)套接字上的異步錯誤或其他異步錯誤(其中一個套接字調(diào)用未明確返回的錯誤)绅络。SO_KEEPALIVE 保持連接月培。
在空閑套接字上發(fā)送探測嘁字,以驗(yàn)證套接字是否仍處于活動狀態(tài)。SO_LINGER 延遲關(guān)閉連接杉畜。
啟用此選項(xiàng)纪蜒,在調(diào)用close時(shí)如果存在未發(fā)送的數(shù)據(jù)時(shí),在close期間將阻止調(diào)用應(yīng)用程序此叠,直到數(shù)據(jù)被傳輸或連接超時(shí)纯续。SO_OOBINLINE 切換帶外數(shù)據(jù)的接收。
啟用此選項(xiàng)會導(dǎo)致帶外數(shù)據(jù)在接收時(shí)放入正常數(shù)據(jù)輸入隊(duì)列,使其可用于recvfrom和recv猬错,而無需在這些調(diào)用中指定MSG_OOB標(biāo)志窗看。
禁用此選項(xiàng)會導(dǎo)致帶外數(shù)據(jù)在接收時(shí)放入優(yōu)先級數(shù)據(jù)輸入隊(duì)列,只有通過在這些函數(shù)中指定MSG_OOB標(biāo)志才能使其可用于recvfrom和recv倦炒。
什么是帶外數(shù)據(jù)SO_RCVBUF 獲取接收緩沖區(qū)的大小显沈。 SO_RCVLOWAT 獲取接收緩沖區(qū)的下限。
這是在成功完成read逢唤,recv拉讯,recvfrom,activate_on_receipt或activate_on_receipt_with_length函數(shù)之前必須接收的最小數(shù)據(jù)量鳖藕。SO_RCVTIMEO 獲取接收超時(shí)值魔慷。
該值是系統(tǒng)在超時(shí)操作之前等待read,recv著恩,recvfrom院尔,tpf_read_TCP_message,activate_on_receipt喉誊,activate_on_receipt_with_length召边,activate_on_receipt_of_TCP_message,accept裹驰,activate_on_accept或connect函數(shù)成功完成的時(shí)間隧熙。返回值0表示系統(tǒng)不會超時(shí)。SO_REUSEADDR 允許本地地址復(fù)用幻林。
啟用此選項(xiàng)允許綁定已使用的本地地址贞盯。SO_SNDBUF 設(shè)置發(fā)送緩沖區(qū)的大小。 SO_SNDLOWAT 獲取發(fā)送緩沖區(qū)的下限沪饺。
啟用此選項(xiàng)即代表這是發(fā)送緩沖區(qū)的必須可用最小空間量躏敢。以允許處理select函數(shù)。SO_SNDTIMEO 獲取發(fā)送超時(shí)值整葡。
該值是系統(tǒng)在超時(shí)操作之前等待發(fā)送件余,發(fā)送,寫入或?qū)懭牍δ芡瓿傻臅r(shí)間遭居。SO_TCPDELAY 返回獲取TCP延遲確認(rèn)計(jì)時(shí)器值啼器。<Br>該值是z / TPF系統(tǒng)在發(fā)送獨(dú)立確認(rèn)(ACK)以確認(rèn)此TCP套接字上的數(shù)據(jù)之前等待的時(shí)間。 SO_TCPDUACK 獲取快速重傳值的重復(fù)確認(rèn)(ACK)俱萍。 SO_TYPE 獲取套接字的類型端壳。 SO_UDPMPSIZ 獲取套接字的最大數(shù)據(jù)包大小。
此選項(xiàng)進(jìn)隊(duì)UDP套接字有效枪蘑。
參考文獻(xiàn):getsockopt
Ending......
請關(guān)注微信公眾號:進(jìn)擊的阿黑损谦,謝謝岖免。