欢迎来到天天文库
浏览记录
ID:17409574
大小:36.12 KB
页数:43页
时间:2018-08-31
《c#中使用异步socket编程实现tcp网络服务的c s的通讯构架》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C#中使用异步Socket编程实现TCP网络服务的CS的通讯构架 usingSystem; usingSystem.Net.Sockets; usingSystem.Net; usingSystem.Text; usingSystem.Diagnostics; usingSystem.Collections; namespaceIbms.Net.TcpCSFramework { /// ///网络通讯事件模型委托 /// publicdelegatevoidNetEvent(objects
2、ender,NetEventArgse); /// ///提供TCP连接服务的服务器类 /// ///版本:1.1 ///替换版本:1.0 /// ///特点: ///1.使用hash表保存所有已连接客户端的状态,收到数据时能实现快速查找.每当 ///有一个新的客户端连接就会产生一个新的会话(Session).该Session代表了客 ///户端对象. ///2.使用异步的Socket事件作为基础,完成网络通讯功能. ///3.支持带标记的数据报文格式的识别,以完成大数据报文的传输和适应恶劣的网 ///络
3、环境.初步规定该类支持的最大数据报文为640K(即一个数据包的大小不能大于 ///640K,否则服务器程序会自动删除报文数据,认为是非法数据),防止因为数据报文 ///无限制的增长而倒是服务器崩溃 ///4.通讯格式默认使用Encoding.Default格式这样就可以和以前32位程序的客户端 ///通讯.也可以使用U-16和U-8的的通讯方式进行.可以在该DatagramResolver类的 ///继承类中重载编码和解码函数,自定义加密格式进行通讯.总之确保客户端与服务 ///器端使用相同的通讯格式 ///5.使用C#nativec
4、ode,将来出于效率的考虑可以将C++代码写成的32位dll来代替 ///C#核心代码,但这样做缺乏可移植性,而且是Unsafe代码(该类的C++代码也存在) ///6.可以限制服务器的最大登陆客户端数目 ///7.比使用TcpListener提供更加精细的控制和更加强大异步数据传输的功能,可作为 ///TcpListener的替代类 ///8.使用异步通讯模式,完全不用担心通讯阻塞和线程问题,无须考虑通讯的细节 /// ///注意: ///1.部分的代码由RationalXDE生成,可能与编码规范不符 /// ///原理:
5、/// /// ///使用用法: /// ///例子: /// /// publicclassTcpSvr { #region定义字段 /// ///默认的服务器最大连接客户端端数据 /// publicconstintDefaultMaxClient=100; /// ///接收数据缓冲区大小64K /// publicconstintDefaultBufferSize=64*1024; ///
6、 ///最大数据报文大小 /// publicconstintMaxDatagramSize=640*1024; /// ///报文解析器 /// privateDatagramResolver_resolver; /// ///通讯格式编码解码器 /// privateCoder_coder; /// ///服务器程序使用的端口 /// privateushort_port; ///
7、 ///服务器程序允许的最大客户端连接数 /// privateushort_maxClient; /// ///服务器的运行状态 /// privatebool_isRun; /// ///接收数据缓冲区 /// privatebyte[]_recvDataBuffer; /// ///服务器使用的异步Socket类, /// privateSocket_svrSoc
8、k; /// ///保存所有客户端会话的哈希表 /// privateHas
此文档下载收益归作者所有