socket端新增位址復用

2021-07-26 10:26:28 字數 641 閱讀 2614

傳智掃地僧課程學習筆記。

實驗1,

執行之前的伺服器程式後,

再執行乙個,

實驗2,

執行伺服器程式,執行客戶端程式,

然後結束伺服器程式,

注意了啊,這時候你再開啟伺服器程式,會提示和上面一樣的錯誤,

這時候你用 netstat  -na | grep 8001,

這時候,仍然有資訊回來,

如下,結論就是,處於類似的狀態你,你再次啟動伺服器程式,無法啟動,

所以有這樣乙個技術,

setsockopt,在bind之前呼叫,

之後你再啟動伺服器程式,就不會提示錯誤了,

不過這時候估計是因為之前的連線已經斷了,所以你繼續從客戶端發資訊,會沒有回應,

這時候你重新啟動客戶端,就又像之前一樣正常收發資料了,

int optval = 1;

if (setsockopt(sockfd, sol_socket, so_reuseaddr, &optval, sizeof(optval))

< 0)

if( bind( sockfd, (struct sockaddr *)&srvaddr, sizeof( srvaddr)) <0)

socket 程式設計的埠和位址復用

int opt 1 if setsockopt sockfd,sol socket,so reuseaddr,const void opt,sizeof opt so reuseaddr允許啟動乙個監聽伺服器並 其眾所周知埠,即使以前建立的將此埠用做他們的 本地埠的連線仍存在。這通常是重啟監聽伺服器...

Socket程式設計 I O復用

之前基礎部分的socket流程是伺服器與客戶端之間是一對一的情形,但是,在實際情況下基本是多客戶端對一台伺服器,如何解決伺服器同時收到多個客戶端請求?基本上,這一類的需求就需要用到i o復用的技術。以下筆記詳情請參考 網路程式設計 卷一 i o復用典型使用場合 1 伺服器同時處理多個客戶套接字請求 ...

Linux系統 socket埠復用

1 埠復用 埠復用最常用的用途是 設定方法 int opt 1 so reuseaddr,setsockopt sockfd,sol socket,const void opt,sizeof opt 注意事項 為什麼要有這個埠復用呢 因為在服務端結束後,也就是第三次揮手的時候會有個等待釋放時間,這個...