同步操作将从 若汝棋茗/TouchSocket 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
RRQMSocket程序集由作者若汝棋茗开发,所有版权归作者所有,程序集源代码在遵循Apache License 2.0的开源协议下,可供其他开发者二次开发及(商业)使用。
更新时间:2021.03.13
更新内容:
此次更新内容较多,会产生一些不兼容问题,谨慎更新。
①TCP框架
1.增加:引入对象池,SocketClient的生成由系统完成,用户只需要在创建时增加其他设置即可。
2.增加:TokenTcp系列,和普通tcp相比,性能并无差别,只是在连接时需要Token验证。
3.增加:ConnectionPool连接池系列,在使用时可直接发送,接收数据。
4.增加:RRQMTokenTcpClient类,简单的TokenTcpClient的实现,以供RPC池使用。
5.增加:TcpService,TcpClient类,在绑定,连接时除了快捷设置外,还可以使用EndPoint。
6.增加:ISocketClient类,实现所有服务器辅助类接口。
7.增加:TcpService类,增加最大连接设置,超出连接数的将被断开连接。
8.修改:SocketClientCollection类,由字典贮存完成,可通过IDToken索引获得实例。
9.修改:SocketClientCollection类,重新赋值IDTokenFormat,可修改IDToken的生成规则。
10.修改:其他类,继承关系,接口实现都做了不同程度的调整。
11.修复:修复在断开连接的情况下仍然接收空数据的情况。
12.删除:移除AlowSend属性。
②文件传输模块:
1.增加:服务器端增加SendSystemMes方法。
2.修改:客户端,服务器辅助类继承关系改变,需要验证Token。
3.修改:在不开启断点续传的情况下,不进行Hash验证,这意味着快速上传将失效。
4.删除:快速上传开关,在断点续传模式下默认开启。
5.优化:限速逻辑,在大宽带传输时,不再需要修改BufferLength。
③RPC模块
1.增加:服务器端增加(开放)Send方法,可以直接让RPCSocketClient回传消息。
2.增加:RRQMMethodAttribute类。增加异步设置。
3.增加:MultipleRPCClient类,集群RPC通信池,在牺牲小量性能的情况下保障更稳定的传输。
4.增加:IRPCClient接口,在生成代理文件时需要传入该接口参数。
5.增加:IRPCClient接口,可直接获取IDToken。
6.增加:TcpRPCService类,开放MethodStore属性,用于获取所有的ServiceProvider实例。
7.修改:RPCClient,RPCService类,继承,接口实现更改。
8.修改:ServerProvider类,增加相关属性和方法,用于获取调用该实例方法的ISocketClient。
9.优化:CodeMap类,优化生成代码逻辑。
更新时间:2021.03.02
更新内容:
①TCP框架
1.全面引入RRQMCore中的优质内容,例如内存池,等待数据回传,消息通知等。
2.TCP传出数据由Byte替换为ByteBlock,具有和流一样的操作。
3.TcpService采用泛型,避免拆装箱操作。
4.修复服务器多线程模式下数据解析错误。
5.增加固定包头,固定长度,终止字符分割三种不同的数据解析功能。
②文件传输模块:
1.极致优化性能,更少的内存申请、更大的传输单元,传输速度达500Mb/s
③RPC模块
1.重新架构RPC,代理生成所有文件,避免元数据泄露问题。
2.取消反向RPC内容,改为SendBytesWaitReturn方法替代。
3.重新定义序列化接口,采用分块序列化方式,将主要序列化工作交由系统。
RRQMSocket是一个整合性网络通信框架,特点是支持高并发、事件驱动、易用性强、二次开发难度低等。其中主要内容包括:TCP服务通信框架、文件传输、RPC等内容,后续还会继续扩展其他组件,希望大家多多支持。
常用类继承图
TcpService是所有基于TCP协议类的基类,也是在服务器端创建服务器的对象类,但该类是抽象类,必须通过继承才能创建其具体对象,原因是在该类中,只实现了服务器的管理功能,但未实现其数据接收和处理功能,所以必须倚仗服务器辅助类才能实现其实际功能。其简单介绍如下:
a.属性
IP
:绑定服务器所用到的IP地址。Port
:绑定服务器所用到的端口号 。BufferLength
:缓存池长度。Logger
:日志记录器。MainSocket
:Socket主通信器 。IsBand
:判断服务器绑定是否成功。IsCheckClientAlive
:是否自动检验客户端活性(心跳检测)。BytePool
:获取内存池实例,该实例不可直接赋值,但是可以设置其参数。SocketClients
:获取已连接并且存活的客户端集合。b.事件
事件名 | 触发 |
---|---|
ClientConnected | 当客户端连接成功时 |
ClientDisconnected | 当客户端断开连接时 |
c.方法
方法名 | 功能 |
---|---|
Bind | 绑定本地监听IP及端口号 |
Dispose | 断开绑定并且释放资源 |
具体的创建步骤详见C# 创建高并发、高性能TCP通信框架
TcpClient是基于TCP协议的客户端抽象类,一般的在接收和处理普通TCP报文时,客户端是不限类型、语言的。但是为统一使用,本程序集仍提供统一类型,其介绍如下:
a.属性
IP
:连接服务器所用到的IP地址。Port
:连接服务器所用到的端口号 。BufferLength
:缓存池长度。Logger
:日志记录器。MainSocket
:Socket主通信器 。Online
:判断客户端是否连接成功。AllowSend
:是否允许发送数据。BytePool
:获取内存池实例,该实例不可直接赋值,但是可以设置其参数。DataHandlingAdapter
:数据处理适配器。b.事件
事件名 | 触发 |
---|---|
ConnectedService | 当客户端连接成功时 |
DisConnectedService | 当客户端断开连接时 |
c.方法
方法名 | 功能 |
---|---|
Connect | 连接服务器 |
Send | 发送数据 |
Dispose | 断开绑定并且释放资源 |
TcpSocketClient是基于TCP协议的服务器客户端抽象类,因为服务器类只对连接的客户端进行管理和检测,所以对于数据的处理,必须由辅助类实现,可以认为TcpSocketClient就是一个特殊的客户端类,他具有和TcpClient一样的接口功能,是直接参数数据交换的类,其介绍如下:
a.属性
IP
:连接到服务器的远程客户端的IP地址。Port
:连接到服务器的远程客户端的端口号 。BufferLength
:缓存池长度。Logger
:日志记录器。MainSocket
:Socket主通信器 。Online
:判断TcpSocketClient是否在线。AllowSend
:是否允许发送数据。BytePool
:获取内存池实例,该实例不可直接赋值,但是可以设置其参数。DataHandlingAdapter
:数据处理适配器。b.事件
无
c.方法
方法名 | 功能 |
---|---|
Send | 发送数据 |
Dispose | 断开绑定并且释放资源 |
具体的创建步骤详见C# 创建高并发、高性能TCP通信框架
文件传输模块是基于TCP协议的网络文件传输类的整合。它适用于局域网、广域网、组合网等各种网络环境中,其主要功能包括上传文件、下载文件、限速传输、断点续传。快速上传、事件通知等。
FileService是基于TcpService的类,其功能基础和TcpService一致。但是也有增强功能,其介绍如下:
a.属性
IP
:连接到服务器的远程客户端的IP地址。Port
:连接到服务器的远程客户端的端口号 。BufferLength
:缓存池长度。Logger
:日志记录器。MainSocket
:Socket主通信器 。Online
:判断TcpSocketClient是否在线。AllowSend
:是否允许发送数据。BytePool
:获取内存池实例,该实例不可直接赋值,但是可以设置其参数。DataHandlingAdapter
:数据处理适配器。DownloadSpeed
:下载总速度。UploadSpeed
:上传总速度。BreakpointResume
:断点续传开关。IsFsatUpload
:快速上传开关。b.事件
事件名 | 触发 |
---|---|
ConnectedService | 当客户端连接成功时 |
DisConnectedService | 当客户端断开连接时 |
BeforeReceiveFile | 当客户端请求上传文件之前 |
BeforeSendFile | 当客户端请求下载文件之前 |
ReceiveFileFinished | 接收完客户端上传的文件时 |
SendFileFinished | 发送完客户端下载的文件时 |
ReceiveSystemMes | 当收到客户发送的消息时 |
ReceivedBytesThenReturn | 当收到客户端数据并回传时 |
c.方法 无
具体的创建步骤详见C#、Socket文件传输、大文件续传、可高性能、高并发运行、断点续传、数据对象传递等功能
FileClient是基于TcpClient的类,其功能基础和TcpClient一致。但是也有增强功能,其介绍如下:
a.属性
IP
:连接到服务器的远程客户端的IP地址。Port
:连接到服务器的远程客户端的端口号 。BufferLength
:缓存池长度。Logger
:日志记录器。MainSocket
:Socket主通信器 。Online
:判断TcpSocketClient是否在线。AllowSend
:是否允许发送数据。BytePool
:获取内存池实例,该实例不可直接赋值,但是可以设置其参数。DataHandlingAdapter
:数据处理适配器。DownloadSpeed
:下载速度。UploadSpeed
:上传速度。UploadFileBlocks
:上传文件包集合。DownloadFileBlocks
:下载文件包集合。Timeout
:单次请求超时时间。UploadProgress
:上传进度。DownloadProgress
:下载进度。UploadFileInfo
:上传文件信息。DownloadFileInfo
:下载文件信息。ReceiveDirectory
:下载文件存放目录。b.事件
事件名 | 触发 |
---|---|
ConnectedService | 当客户端连接成功时 |
DisConnectedService | 当客户端断开连接时 |
BeforeUploadFile | 当客户端请求上传文件之前 |
BeforeDownloadFile | 当客户端请求下载文件之前 |
UploadFileFinshed | 接收完客户端上传的文件时 |
DownloadFileFinshed | 发送完客户端下载的文件时 |
TransferFileError | 当传输文件发生致命性错误时 |
c.方法
方法名 | 功能 |
---|---|
Connect | 连接服务器 |
DownloadFile | 下载文件 |
PauseDownload | 暂停下载 |
ResumeDownload | 恢复下载 |
StopDownload | 终止下载 |
UploadFile | 上传文件 |
PauseUpload | 暂停上传 |
ResumeUpload | 恢复上传 |
StopUpload | 终止上传 |
SendSystemMessage | 发送消息 |
SendBytesWaitReturn | 发送流并等待返回 |
Dispose | 释放资源 |
具体的创建步骤详见C#、Socket文件传输、大文件续传、可高性能、高并发运行、断点续传、数据对象传递等功能
RPC是远程过程调用(Remote Procedure Call)的缩写形式。客户程序通过接口调用服务内部的标准或自定义函数,获得函数返回的数据进行处理后显示或打印。类似于WCF和WebService。
RPC服务器基本上没有其他的概述,直接使用即可。
a.属性 无 b.事件 无 c.方法 无
具体的创建步骤详见C# RPC高性能微框架,支持任意序列化、out及ref、可使用http协议跨平台
RPC客户端基本上没有其他的概述,直接使用即可。
a.属性 无 b.事件 无 c.方法 无
具体的创建步骤详见C# RPC高性能微框架,支持任意序列化、out及ref、可使用http协议跨平台
程序集本身不提供加密及解密服务,所以文件,数据对象,文本等在传输过程中都是直接传输的,但是程序集里面整合了3DES的加密方法,具体使用可以直接调用DataLock的静态方法进行数据的加密和解密。
谢谢大家对我的支持,如果还有其他问题,请加群讨论。谢谢!
您的支持就是我不懈努力的动力。打赏时请一定留下您的称呼。小弟定会张榜展示。
打赏名单:
(以下排名只按照打赏时间顺序)
1.Bobo Joker
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。