【TCP通訊】多客戶端連線一個伺服器端總結
阿新 • • 發佈:2018-12-30
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。