文档详情

C#高性能大容量SOCKET并发.pdf

发布:2018-01-10约5.97万字共38页下载文档
文本预览下载声明
/sqldebug_fan/article/details C#高性能大容量SOCKET 并发(零):代码结构说明 C#版完成端口具有以下特点:  连接在线管理(提供在线连接维护,连接会话管理,数据接收,连接断开等相关事件跟踪);  发送数据智能合并(组件会根据资源使用情况,对多个同时发送向同一连接的多个消息数据进行合并写入缓冲 区;  内存池管理(提供一系列的接收和发送buffer 可复用池);  数据读写封装;  通讯协议封装; 由不同的类负责实现,比MSDN 的例子代码多了不少逻辑,为了方便大家阅读和理解,把整体类框架设计整体如下。 类结构图 类说明 1. AsyncSocketServer:服务入口,建立Socket 监听,负责接收连接,绑定连接对象,处理异步事件返回的 接收和发送事 件;m_asyncSocketUserTokenPool 是管理所有空闲的AsyncSocketUserToken,采用栈的管 理方式,后进先 出;m_asyncSocketUserTokenList 是管理所有正在执行的AsyncSocketUserToken,是一 个列 表;m_logOutputSocketProtocolMgr 是LogOutputSocketProtocol 的管理对 象; m_uploadSocketProtocolMgr 是UploadSocketProtocol 的管理对象,用于检测是否同时上传同一个文 件; m_downloadSocketProtocolMgr 是DownloadSocketProtocol 的管理对象;m_daemonThread 是守护进程,用 于关闭超时连接。 2. AsyncSocketUserToken:用于SocketAsyncEventArgs 绑定,保存 每个Socket 服务对象,包括: m_receiveEventArgs 接收数据异步事件;m_asyncReceiveBuffer 接收数据异步事件使 用的缓存; m_sendEventArgs 发送数据异步事件;m_receiveBuffer 接收异步事件返回的数据存放缓存,用于后续的分 包;m_sendBuffer 用于保存发送的数据缓存;m_asyncSocketInvokeElement 是用于协议调用的基类,主要 实现分包,并发 发送的包加到发送列表中,发送完成回调时继续发送下一个包;m_connectSocket 是连接 的Socket 对象。 3. AsyncSocketInvokeElement: 用于协议调用的基类,主要实现分包,并发发送的包加到发送列表中,发送 完成回调时继续发送下一个包,包括:m_incomingDataParser 用于 分析接收到的数据包,把协议解析出命 令、关键字、数据,并存储到列表中;m_outgoingDataAssembler 用于组装需要发送的数据,把命 令、关 键字、数据组成符合协议格式的数据,并存储在列表中。 4. BaseSocketProtocol 是所有协议的基类,把一些公共的方法 放在这里,后续的ControlSocketProtocol、 DownloadSocketProtocol LogOutputSocketProtocol RemoteStreamSocketProtocol 、 、 、 ThroughputSocketProtocol、UploadSocketProtocol 都从这里继承。 /sqldebug_fan/article/details C#高性能大容量SOCKET 并发(一):IOCP 完成端口例子介绍 例子主要包括SocketAsyncEventArgs 通讯封装、服务端实现日志查看、SCOKET 列表、上传、下载、远程文件流、 吞吐量协议,用 于测试SocketAsyncEventArgs 的性能和压力,最大连接数支持65535 个长连接,最高命令交互速 250MB/S 1Gb=125MB/S 。 C# 度达到 (使用的是 的方式,相当于千兆网卡
显示全部
相似文档