網路程式設計 常用的套接字選項

2021-06-23 05:48:54 字數 1237 閱讀 3243

註明:本文為學習經驗的總結,部分內容引用自unix網路程式設計卷一,有錯誤或者交流意見請發郵件至[email protected].非常感謝

網路程式設計中,常用套接字選項完成對網路和套接字行為的控制。

套接字選項分為sol_socket級別,ip級別,tcp/sctp級別3個大類。常用getsockopt,setsockopt函式來設定,但對於特殊的sctp選項,要使用stcp_opt_info(需要傳遞值-結果型別引數)。fcntl,ioctl函式也可以影響套接字選項,fcntl主要設定套接字的非阻塞態。

so_broadcast 主要開啟廣播訊息的能力。

so_error 獲取套接字上的錯誤。

so_keepalive 保持存活。預設在兩小時內沒有資料交換,tcp會自動發給對端乙個保持存活的探測分節。

so_linger 設定close的行為。(預設立即返回)

so_oobinline 開啟後,帶外資料將被流在正常的輸入佇列。這種情況下接收函式msg_oob不能用來讀帶外資料。

so_ recvbuf  so_sndbuf 核心的接收,傳送緩衝區。udp可能會造成緩衝區的溢位。

so_reclowat  so_sndlowat 接收低水位標記,傳送低水位標記。適用於select操作,當緩衝區的位元組數大於所設的標記,select函式才返回。預設情況下為1位元組。

so_rcvtimeo   so_sndtimeo   設定套接字接收和傳送的乙個超時值。

so_reuseaddr  1.此選項允許乙個監聽伺服器**其終所周知的埠,即使以前建立的將該埠用作他們本地埠的鏈結的仍然存在。它允許我們在多程序伺服器中,父程序崩潰,子程序仍在為客戶服務的時候,可以重新啟動伺服器。2.允許在同乙個埠上啟動同乙個伺服器的多個例項。3.允許單個程序**同一埠到多個套機字。常用於udp型別套接字獲取客戶請求的目的位址。4.允許完全重複的**。此種情況常用於多播和廣播的情況。

so_reuseport 

so_type 本選項返回了套接字位址的型別,通常由啟動時繼承了套接字的程序使用。

so_useloopback  本選項僅用於af_route 的套接字,預設為開啟,相應的套接字將接收在其上傳送的任何乙個資料報的副本。

這裡我們再介紹乙個tcp選項。tcp_nodelay:

預設情況nagle(如果某個鏈結上有待確認資料,那麼在資料確認之前,不會有傳送相應小分組的行為)下是開啟的,目的在於減少廣域網的小分組數量,但是犧牲的延遲的指標。當需要每次產生乙個小分組的回應的時候,應該開啟此選項,禁止nagle演算法

UNIX網路程式設計 TCP套接字選項

一直想寫一下tcp通訊的事,套接字選項 so debug 當給乙個tcp套接字開啟本選項時,核心將為tcp在該套接字傳送和接收的所有分組保留詳細跟蹤資訊。so dontroute 本選項規定外出的分組將繞過底層協議的正常路由機制。so keepalive 本選項的功用是檢測對端主機是否崩潰或變得不可...

Linux 之 網路程式設計之套接字選項

獲取和設定套接字選項 so keepalive選項 so linger選項 so rcvbuf和so sndbuf選項 so rcvlowat和so sndlowat選項 so rcvtimeo和so sndtimeo選項 so reuseaddr選項getsockopt 函式和setsockopt...

網路程式設計筆記 套接字可選項

套接字具體多種特性,可通過可選項更改。1 套接字可選項和i o緩衝大小 sol locket層是套接字相關的通用可選項 ipproto ip層可選項是ip協議相關事項 ipproto tcp層可選項是tcp協議相關事項 可選項的讀取和設定通過如下兩個函式完成 include intgetsockop...