2014-01-23 115 views
0

我的服務器套接字可以支持最大可能的連接。但是我怎樣才能限制併發連接的數量,使得它可以同時支持至少5個但不超過20個客戶端。限制套接字併發連接

+0

你定位的操作系統是什麼? – eyalm

回答

0

你有兩個選擇:

  1. 根本就不叫accept()多次,那麼你是準備處理。如果您已連接20個客戶端,請再次停止撥打accept(),直到客戶端首先斷開。

  2. 通常會一直打電話給accept(),但如果您已連接20個客戶端,請立即致電close()(或在Windows上爲closesocket())。

    a。在Windows上的這種變化只是使用WSAAccept()代替。它允許您指定一個回調來有條件地接受客戶端。您可以讓它返回CF_REJECT,而20個客戶端已連接。這樣,WSAAccept()將永遠不會允許同時連接超過20個客戶端。

+0

在代碼中存在一個無限循環for(;;),我將其更改爲(int i = 0; i <20; i ++)。它像(;;){accept(),forking ....}一樣。我認爲你的意思就是我做到了。 – user2677682