理解NetworkSocket之TcpServerBase

來源:互聯網
上載者:User

前言

本小節是NetworkSocket系列的第9小節,在閱讀本小節之前,您可能需要先閱讀前面的幾個小節,否則可能覺得內容跳轉比較大。

描述

TcpServerBase<TDataEvenArgs>是所有Tcp伺服器對象的基礎類,它將固有的用戶端串連監聽、線上用戶端對象維護、用戶端串連斷開、關閉用戶端串連這些操作已經封裝好,對於具體協議的伺服器,只要派生於此類,編寫協議描述就可以了。

類圖

設計思路

效能:TcpServerBase<TDataEventArgs>使用SocketAsyncPool<TDataEventArgs>來儲存一定數量的SocketAsync<TDataEventArgs>,當用戶端串連後監聽到串連Socket,從中取出一個SocketAsync用來綁定Socket,當這個Socket中斷連線後,釋放SocketAsync綁定的Socket,並把SocketAsync放回到pool中,達到迴圈利用SocketAsync裡面的兩個SocketAsyncEventArgs對象。

方便:TcpServerBase<TDataEventArgs>在用戶端串連或類型後,都觸發對就的OnConnect或OnDisconnect事件,事件的一個參數就是SocketAsync<TDataEventArgs>類型,表示當前用戶端。同時自動維護線上的用戶端,存放於AliveClients集合中。

靈活:TcpServerBase<TDataEventArgs>不依賴於具體的封包方法(協議),將變化的協議通過TDataEventArgs做為泛型參婁傳進來,提供protected virtual TDataEventArgs AnalysisRecvData(ByteBuilder recvBuilder)方法,給衍生類別重寫解析資料。

總結

TcpServerBase<TDataEventArgs>和SocketAsync<TDataEventArgs>設計思路差不多,將固有的方法和屬性封裝,易於調用,將可變的協議做為泛型參數傳進來,並提供virtual AnalysisRecvData方法給衍生類別重寫解析資料的方法。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.