1. 程式人生 > >【TCP通訊】多客戶端連線一個伺服器端總結

【TCP通訊】多客戶端連線一個伺服器端總結

Windows下TCP通訊,多個客戶端連線伺服器端。

一、伺服器端流程實現如下:

1、通過socket函式,建立基於流式型別的socket,可名為serverSocket;

2、呼叫bind函式,繫結本地的監聽埠號和本地IP地址;

3、呼叫listen函式,開始監聽客戶端請求。其中該函式第二個引數指定了最大連線客戶端數目;

4、通過呼叫AfxBeginThread(ThreadFun, 0),實現建立執行緒處理監聽後客戶端請求;

5、關閉serverSocket;

如上流程中,通過建立執行緒辦法實現對客戶端請求的處理。

執行緒處理函式ThreadFun的實現流程如下:

1)呼叫accept等待客戶端請求,並返回客戶端通訊的SOCKET,可名為clientSocket;

2)客戶端請求接收成功後,繼續呼叫AfxBeginThread(ThreadFun, 0)建立執行緒,實現對其他客戶端請求做處理;

3)呼叫recv接收資料;

4)檢測接收到資料的合法性,並呼叫send函式返回響應資料;

5)呼叫closesocket(clientSocket),關閉得到到客戶端請求的socket。

二、客戶端實現流程

通常流程沒有加入超時處理,如下通過其他機制實現了客戶端接收訊息響應超時的處理。

實現流程如下:

1、建立socket基於流式SOCKET型別的SOCKET。

2、呼叫connect連線伺服器

3、呼叫send傳送請求資料;

4、通過select函式判斷Socket接收資料是否超時。其中需要使用到FD_SET和TIME_VAL型別。

5、呼叫closesocket關閉客戶端Socket。