因為tcp連線的time_wait時間,所以乙個連線斷開後不能立即復用。
此時可以改變核心的tcp_tw_reuse狀態 或者在bind函式之前呼叫setsockopt函式設定狀態
示例**
nt main
(int argc,
char
**ar**)
int rt2 =
listen
(listenfd, listenq);if
(rt2 <0)
signal
(sigpipe, sig_ign)
;int connfd;
struct sockaddr_in client_addr;
socklen_t client_len =
sizeof
(client_addr);if
((connfd =
accept
(listenfd,
(struct sockaddr *
)&client_addr,
&client_len)
)<0)
char message[maxline]
; count =0;
for(;;
)else
if(n ==0)
message[n]=0
;printf
("received %d bytes: %s\n"
, n, message)
; count++;}
}
為什麼要在bind之前設定呢 下面別人的理解
因為有了序列號、時間戳等所以能夠方式新舊連線重用產生的問題,所以在所有 tcp 伺服器程式中,呼叫 bind 之前請設定 so_reuseaddr 套接字選項,這不會產生什麼危害。
網路程式設計 Socket程式設計
一 網路部分 1.ip 2.埠號 在網路協議中使用埠號識別主機上不同的程序,不同的埠對應於不同的服務 應用程式 3.協議 tcp二 socket部門socket通訊基本流程圖 根據socket通訊基本流程圖,總結通訊的基本步驟 伺服器端 第一步 建立乙個用於監聽連線的socket對像 第二步 用指定...
socket網路程式設計
首先認識乙個表示主機資訊的結構體 struct hostent h addrtype 這是表示主機所使用的位址型別的定義,在c語言winsock2.h標頭檔案中以 af 開頭的巨集定義就是它的值。如果使用的是ipv4,則值為 af inet 如果是ipv6,值為 af inet4 h length ...
Socket網路程式設計
socket 網路程式設計 在c free中建立乙個對話方塊工程,取名socket1,建立如下檔案結構 main.h ifndef main h define main h include bool winapi main proc hwnd hwnd,uint umsg,wparam wparam...