網路程式設計10 重用socket

2021-10-01 07:59:44 字數 986 閱讀 5777

因為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...