TouchSocket
文章平均质量分 78
TouchSocket使用API介绍
若汝棋茗
老道程序员
展开
-
TouchSocket|适配一个c++的Tcp自定义协议
然后再新建一个类,名为MyClientAdapter,继承CustomFixedHeaderDataHandlingAdapter,同时指定MyResponsePackage为泛型成员。该接口大概如下,其中Build方法,会指示成员应当如何构建数据。首先新建一个类,名为MyRequestPackage,同样继承MyBase,然后实现IFixedHeaderRequestInfo。此后,我们只需要发送MyRequestPackage对象,然后适配器内部会自动调用Build函数,然后执行发送。原创 2023-12-06 22:36:41 · 2404 阅读 · 2 评论 -
C# 如何实现对“属性”的扩展
例如:一个Person类,他在项目初期,只有一个属性Age,可随着项目升级,可能需要Name,Address,甚至Price。继承,会让显式的Person类无法使用声明到子类的属性,到时候必须进行强制转换,而一旦继承分支多起来的话,将非常糟糕。属性是一个类的特征,随着开发的不断升级,这种特征可能在一直变化,有时候为了向下兼容,一般属性的数量都是直接递增的。而重新编译,带来的问题就更大了,总不能把属性都声明在父类吧。那么常规做法就是继承,然后在子类添加属性。当后续你需要什么属性的时候,自己声明扩展即可。原创 2023-02-16 13:54:34 · 4225 阅读 · 3 评论 -
C# Tcp服务器实现多端口、多协议解析
当同一个端口解析不同协议时,就需要协议侦测,举个例子说,你想用一个吸管去知道四个杯子里都是什么的时候,你只有一个一个去尝,所以这样的设计性能低下,且并不可靠,甚至会导致严重的偶发性bug。所以最好最好不要这样设计。有时候物联网设备管理平台需要接收不同厂家的物联网设备,每家的设备通讯协议各不相同。平台需要为每个厂商提供一个通讯端口。所以需要实现一个端口,对应一个数据解析器。用接口实现的好处是,实例可以自由实现,比如使用数据库实现,能够实现持久化限制访问名单。即可,具体步骤详看链接博客。原创 2023-01-11 12:11:25 · 2702 阅读 · 2 评论 -
C# 实现为Tcp服务器设计访问黑名单、白名单
黑名单的含义就是不允许黑名单上的ip地址对当前服务器进行访问。白名单的含义就是只允许白名单上的ip地址访问当前服务器。原创 2023-01-11 10:56:58 · 2925 阅读 · 3 评论 -
C# 高性能RPC,TouchRpc,支持ref和out关键字、流数据、大数据传输
文章目录一、序言本节须知二、程序集源码、Demo下载2.1 源码位置2.2 Demo位置三、安装四、创建RPC4.1 创建服务五、发现、调用RPC服务六、调用痛点七、代理代码生成7.1 获取代理代码一、序言本节须知在学习本节之前,您必须熟悉RRQM中的Protocol服务器与客户端(或其派生类,例如文件传输和RPC)的创建,如果您不熟悉,请在下列链接中了解。【RRQMSocket】C# 搭建TCP自定义协议、Protocol服务器和客户端二、程序集源码、Demo下载2.1 源码位置RR原创 2021-11-24 14:51:15 · 4508 阅读 · 3 评论 -
.NET C# RPC产品性能测试、性能对比报告(包含Grpc、BeetleXRPC、NewLifeRPC、TouchRpc)
在10w次极简调用中,Grpc用时29.47s,也是用时最久的。BeetleXRPC用时19.34s,NewLifeRPC用时26.88s,TouchSocket用时6.06秒。基本上,TouchSocket是Grpc的五倍,是BeetleXRPC的三倍,是NewLifeRPC的四倍有余。但是值得注意的是,Grpc使用的是在ssl加密模式下HTTP数据格式,且数据参数也经过了message封装类,所以本次测试对于Grpc不是很公平,但是基本上也能给大家一些参考性意见。原创 2022-01-16 16:17:58 · 2505 阅读 · 2 评论 -
C# 创建轻量级Http服务器,用于传输文件、响应webApi,展示静态文件等
有小伙伴提问,c#有没有轻量级的Http服务器,因为直接部署Asp.net Core的话,有点太大了。而且,学习成本也高。我说,微软不是有HttpListener吗?他说不好用。好吧。。。。在这里推荐RRQMSocket.Http,这是一个开源的,轻量级,高性能的Http组件。支持Ssl和多通道的文件传输。文档首页Nuget安装即可,具体步骤详看链接博客。VS、Unity安装和使用Nuget包服务器的创建非常简单,设置好需要监听的地址即可。【处理请求】HttpService处理请求的方式,主要是通过插件实原创 2022-06-23 17:20:40 · 8429 阅读 · 0 评论 -
C# 创建基于TCP、HTTP协议的JsonRpc 2.0(可跨平台、跨语言)
前言JSON-RPC是一个无状态且轻量级的远程过程调用(RPC)协议。 其使用JSON(RFC 4627)作为数据格式。本文中对于JSON-RPC服务框架的选取使用RRQMSocket.RPC.JsonRpc,该框架可以免费用于个人学习、商业使用等。RRQM简介RRQMSocketRRQMSocket是一个轻量级网络通信框架,其特点是多兼容、广适配、高并发。其中主要内容包括:TCP、UDP服务通信框架、大文件传输、RPC、WebApi、XmlRpc、JsonRpc等内容。RRQMSocket.RP原创 2021-07-05 14:55:25 · 3613 阅读 · 4 评论 -
.NET C# Socket产品性能测试、性能对比报告(包含SuperSocket、HPSocket.Net、TouchSocket)
因为我是TouchSocket 的作者,所以难免会对自家产品有诸多赞扬,但是实际上我知道,TouchSocket 还有很长的路要走,好的产品只有经过时间和更多人的考验,才能淘沙出金。所以希望本篇测评,能该您一个建议,也能给TouchSocket 一个机会。下次选择Socket的时候,可以考虑一下TouchSocket 哦。原创 2022-01-15 21:35:29 · 10375 阅读 · 17 评论 -
C# Socket客户端固定端口连接
在使用Socket时,我们都知道创建的服务器是需要绑定端口的,这样才能被客户端正确连接。而客户端在连接后使用的端口号是由操作系统动态分配的,但是有时候我们为了方便记录,或者安全设置,希望客户端得到的端口号也是固定的,那应该怎么做呢?其实非常简单,只需要在客户端Connect之前先绑定就可以。如下代码,这样做的话,客户端在连接到服务器时使用的端口号就是8848。Socket socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,P原创 2021-04-26 13:20:05 · 8950 阅读 · 0 评论 -
C#搭建高效、便捷的WebSocket服务器和客户端
WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。原创 2021-12-27 13:47:22 · 28006 阅读 · 16 评论 -
C# 优雅的为Tcp客户端设计心跳数据包
心跳机制是定时发送一个自定义的 结构体 (心跳包),让对方知道自己还活着,以确保连接的有效性的机制。 网络中的接收和发送数据都是使用操作系统中的 SOCKET 进行实现。 但是如果此 套接字 已经断开,那发送数据和接收数据的时候就一定会有问题。 可是如何判断这个套接字是否还可以使用呢? 这个就需要在系统中创建心跳机制。 其实TCP中已经为我们实现了一个叫做心跳的机制。但是该机制受限于操作系统,而且很容易误报。所以很少被大家使用。大家使用最多的,就是自己设计数据包,然后预留心跳格式,当对方收到心跳包时,直接返原创 2022-07-04 16:40:24 · 6611 阅读 · 4 评论 -
C# TCP如何限制单个客户端的访问流量
创建服务器后,想实现一个限流功能,应该如何实现呢?即可,具体步骤详看链接博客。实际上,该插件也能用于。原创 2022-06-28 10:05:42 · 2356 阅读 · 0 评论 -
C# Tcp服务器如何限制同一个IP的连接数量?
创建服务器后,想实现一个功能,就是“限制同一个IP的连接数量”。我和他说,自定义一个插件即可,结果。那ok,我给大家示例一下吧。即可,具体步骤详看链接博客。今天有小伙伴提问,他在使用。创建插件和连接计数器。原创 2022-06-21 15:13:43 · 3529 阅读 · 0 评论 -
C# 优雅的解决TCP Socket粘包、分包问题
文章目录一、概述二、探索问题2.1 源码位置2.2 Demo位置2.3 预热2.4 Config配置详解三、解决思路四、数据处理适配器概述4.1 正常数据处理适配器(`NormalDataHandlingAdapter`)4.2 固定包头数据处理适配器(`FixedHeaderPackageAdapter`)4.3 固定长度数据处理适配器(`FixedSizePackageAdapter`)4.4 终止因子分割数据处理适配器(`TerminatorPackageAdapter`)五、数据处理适配器工作原理六原创 2020-12-05 14:16:18 · 10180 阅读 · 2 评论 -
C# 超简单的创建高并发、高性能TCP服务器,可用于上位机、PLC、游戏服务器等
说起TCP大家肯定都不陌生,传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 定义。TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。那么对于C#又应该原创 2020-12-05 13:51:36 · 14703 阅读 · 15 评论