詳談 socket套接字

2021-08-28 12:22:44 字數 1328 閱讀 9218

socket.setsockopt(level, optname, value)

①level:在套接字級別上(sol_socket),socket代表了乙個協議棧的不同層,level引數指定了選項應用於哪一層。

level的取值以sol_開頭(sol_socket,sol_tcp等等),它還可以通過設定乙個特殊協議號碼來設定協議選項,

然而對於乙個給定的作業系統,大多數協議選項都是明確的,所以為了簡便,它們很少用於為移動裝置設計的應用程式。

一般為sol_socket

②option_name可以有以下取值:

so_debug,開啟或關閉除錯資訊。

so_reuseaddr,開啟或關閉位址復用功能。

so_dontroute,開啟或關閉路由查詢功能。

so_broadcast,允許或禁止傳送廣播資料。

so_sndbuf,設定傳送緩衝區的大小。其上限為256 * (sizeof(struct sk_buff) + 256),下限為2048位元組。

so_rcvbuf,設定接收緩衝區的大小。上下限分別是:256 * (sizeof(struct sk_buff) + 256)和256位元組。

so_keepalive,套接字保活。

so_oobinline,緊急資料放入普通資料流。

so_no_check,開啟或關閉校驗和。

so_priority,設定在套接字傳送的所有包的協議定義優先權。

so_linger,如果選擇此選項, close或 shutdown將等到所有套接字裡排隊的訊息成功傳送或到達延遲時間後才會返回. 否則, 呼叫將立即返回。

so_passcred,允許或禁止scm_credentials 控制訊息的接收。

so_timestamp,開啟或關閉資料報中的時間戳接收。

so_rcvlowat,設定接收資料前的緩衝區內的最小位元組數。

so_rcvtimeo,設定接收超時時間。

so_sndtimeo,設定傳送超時時間。

so_bindtodevice,將套接字繫結到乙個特定的裝置上。

so_attach_filter和so_detach_filter。

③value取值:

比如s.setsockopt(socket.sol_socket,socket.so_reuseaddr,1)

這裡value設定為1,表示將so_reuseaddr標記為true,

作業系統會在伺服器socket被關閉或伺服器程序終止後馬上釋放該伺服器的埠,

否則作業系統會保留幾分鐘該埠。

套接字 Socket 定義

套接字介面可分為三類 公認埠 註冊埠 動態和 或私有埠 套接字,簡單的說就是通訊的兩方的一種約定,用套接字中的相關函式來完成通訊過程 應用層通過傳輸層進行資料通訊時,tcp和udp會遇到同時為多個應用程式程序提供併發服務的問題。多個tcp連線或多個應用程式程序可能需要通過同乙個 tcp協議埠傳輸資料...

socket 套接字通訊

要通過internet進行通訊,至少需要一對套接字,其中乙個執行在客戶端,稱之為clientsocket,另乙個執行於伺服器端面,稱為serversocket。根據連線啟動的方式以及本地要連線的目標,套接字之間的連線過程可以分為三個步驟 伺服器監聽 客戶端請求 連線確認。伺服器監聽是指服務端套接字並...

套接字(socket) 埠

套接字 socket socket可以看成在兩個程式進行通訊連線中的乙個端點,乙個程式將一段資訊寫入socket中,該socket將這段資訊傳送給另外乙個socket中,使這段資訊能傳送到其他程式中。套接字,是支援tcp ip的網路通訊的基本操作單元,可以看做是不同主機之間的程序進行雙向通訊的端點,...