C#高效能大容量SOCKET併發(零):程式碼結構說明
阿新 • • 發佈:2019-02-01
- AsyncSocketServer:服務入口,建立Socket監聽,負責接收連線,繫結連線物件,處理非同步事件返回的接收和傳送事件;m_asyncSocketUserTokenPool是管理所有空閒的AsyncSocketUserToken,採用棧的管理方式,後進先出;m_asyncSocketUserTokenList是管理所有正在執行的AsyncSocketUserToken,是一個列表;m_logOutputSocketProtocolMgr是LogOutputSocketProtocol的管理物件;m_uploadSocketProtocolMgr是UploadSocketProtocol的管理物件,用於檢測是否同時上傳同一個檔案;m_downloadSocketProtocolMgr是DownloadSocketProtocol的管理物件;m_daemonThread是守護程序,用於關閉超時連線。
- AsyncSocketUserToken:用於SocketAsyncEventArgs繫結,儲存每個Socket服務物件,包括:m_receiveEventArgs接收資料非同步事件;m_asyncReceiveBuffer接收資料非同步事件使用的快取;m_sendEventArgs傳送資料非同步事件;m_receiveBuffer接收非同步事件返回的資料存放快取,用於後續的分包;m_sendBuffer用於儲存傳送的資料快取;m_asyncSocketInvokeElement是用於協議呼叫的基類,主要實現分包,併發傳送的包加到傳送列表中,傳送完成回撥時繼續傳送下一個包;m_connectSocket是連線的Socket物件。
- AsyncSocketInvokeElement:用於協議呼叫的基類,主要實現分包,併發傳送的包加到傳送列表中,傳送完成回撥時繼續傳送下一個包,包括:m_incomingDataParser用於分析接收到的資料包,把協議解析出命令、關鍵字、資料,並存儲到列表中;m_outgoingDataAssembler用於組裝需要傳送的資料,把命令、關鍵字、資料組成符合協議格式的資料,並存儲在列表中。
- BaseSocketProtocol是所有協議的基類,把一些公共的方法放在這裡,後續的ControlSocketProtocol、DownloadSocketProtocol、LogOutputSocketProtocol、RemoteStreamSocketProtocol、ThroughputSocketProtocol、UploadSocketProtocol都從這裡繼承。