SO_REUSEADDR

SO_REUSEADDR,計算機語言,設定套接字

宏定義,原型,注釋,示例,

宏定義

頭檔案
#include<WinSock2.h>

原型

#define SO_REUSEADDR 0x0004

注釋

設定套接字選項為SO_REUSEADDR,socket可重用,經常在socket通信時進行設定。
:編寫 TCP/SOCK_STREAM 服務程式時,SO_REUSEADDR到底什麼意思?
A: 這個套接字選項通知核心,如果連線埠忙,但TCP狀態位於 TIME_WAIT ,可以重用連線埠。如果連線埠忙,而TCP狀態位於其他狀態,重用連線埠時依舊得到一個錯誤信息,指明"地址已經使用中"。如果你的服務程式停止後想立即重啟,而新套接字依舊使用同一連線埠,此時 SO_REUSEADDR 選項非常有用。必須意識到,此時任何非期望數據到達,都可能導致服務程式反應混亂,不過這只是一種可能,事實上很不可能。
一個套接字由相關五元組構成,協定、本地地址、本地連線埠、遠程地址、遠程連線埠。SO_REUSEADDR 僅僅表示可以重用本地地址、本地連線埠,整個相關五元組還是唯一確定的。所以,重啟後的服務程式有可能收到非期望數據。必須慎重使用 SO_REUSEADDR 選項。

示例

//設定套接字選項為SO_REUSEADDR,即socket可重用
int opt=1;
setsockopt(listenfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));

相關詞條

熱門詞條

聯絡我們