摘要:
前言前面给出了几个例子如何使用NetworkSocket构建服务和客户端,但没有详细说明过NetworkSocket里的设计思路,以及几个重要对象的说明,本节将解说NetworkSocket里的最基础最重要的SocketAsync<TDataEventArgs>类。类图设计思路性能:服务器一个重要的参考点就是拼性能,SocketAsync也使用了SocketAsyncEventArgs对象作发送和接收数据,为了防止缓冲区内存碎片化,我们需要把该对象的缓冲区统一放到一块连续的内存区域,对应上图的SocketAsncBufferManage,方便:SocketAsync的目标是,给我一 阅读全文
摘要:
前言在实际运用中,服务器和客户端都需要遵从某种协议,浏览器里有http协议,各路由器也有自己的协议,我们自己编写的服务器和客户端,也往往加入自己某种理解方式的协议,而NetworkSocket的TcpServerEx是使用DataEventExArgs来描述它的协议,如果我们写客户端来连接其它已有的服务器,可能需要扩展NetworkSocket了。假设现有的服务器用的协议是包长[4byte] + 实体数据[N个byte],那么我们就可以如下来实现类似的服务器和和可以与之正常通讯的客户端。编写协议描述NetworkSocket任何协议的描述都是从DataEventArgs类派生,下面我们来实现这 阅读全文
摘要:
前言本小节是NetworkSocket系列的第6小节,在阅读本小节之前,您可能需要先阅读前面的几个小节,否则可能觉得内容跳转比较大。描述FastTcpServerEx是从TcpServerEx派生,使用的协议和TcpServerEx完成相同,FastTcpServerEx充分结合C#强大的反射功能,大大地简化了服务器编程难度,更符合实际通讯项目的编写,与之相比,前两章节提到的TcpServerBase和TcpServerEx构建服务器,离实际项目要求还相差很远。FastTcpServerEx的工作原理是,当收到客户端发来的数据DataEventExArgs后,分析DataEventExArgs 阅读全文
摘要:
描述TcpServerEx是从TcpServerBase<DataEventExArgs>派生,它与TcpServerBase用法非常相似,不同的是它对发送的数据进行封包处理,可以和客户端之间传送复杂的实体,同时对应的SocketAsync<DataEventExArgs>扩展了发送数据的方法SendCallback,该方法发送数据到另一端后,不需要事件接收返回的数据,而是通过回调得到数据,可以在一个方法内编写更符合一般逻辑的代码风格。封包是由DataEventExArgs来描述,其代码如下:View Code using System;using System.Col 阅读全文