c#使用RRQMSocket实现tcp通信
介绍
● TCP组件是基于TCP协议的最基础组件,其基础功能和Socket一致,只是经过RRQM封装后,将高连接、高并发,数据处理等一系列基础功能打包,让使用者不再关心基础架构建设,专心于业务。
● 理论上TCP组件可用于任何基于TCP协议的产品,例如:HTTP、FTP、WebSocket、Telnet、PLC通信、上位机通信等。
产品特点
● 简单易用。
● 多线程。
● 内存池
● 高性能(服务器每秒可接收200w条信息,接收数据流量可达2.5GB/s)
● 多种数据接收模式(IOCP,BIO,Select)。
● 多地址监听(可以一次性监听多个IP及端口)
● 适配器预处理,一键式解决分包、粘包、对象解析(如HTTP,Json)等。
● 超简单的同步发送、异步发送、接收等操作。
● 基于事件驱动,让每一步操作尽在掌握。
产品应用场景
● TCP基础使用场景:可跨平台、跨语言使用。
● 自定义协议解析场景:可解析任意数据格式的TCP数据报文。
下面演示我们的系统 :
创建TcpService一、说明TcpService是TCP系服务器基类,但是不参与实际的数据交互,实际的数据交互由SocketClient完成,所以TcpService的功能只是配置、激活、管理、注销、
重建SocketClient类实例,所以在TcpService中,须指定其SocketClient派生的泛型类型,然后必须实现HandleReceivedData方法,该方法指示如何处理已接收数据或经过适配器转换的对象
。所以具体创建过程如下。
TcpService service = new TcpService();
service.Connecting += (client, e) =>{};//有客户端正在连接
service.Connected += (client, e) =>{};//有客户端连接
service.Disconnected += (client, e) =>{};//有客户端断开连接
service.Received += (client, byteBlock ,requestInfo) =>
{//从客户端收到信息string mes = Encoding.UTF8.GetString(byteBlock.Buffer, 0, byteBlock.Len);Console.WriteLine($"已从{client.Name}接收到信息:{mes}");//Name即IP+Port
};
//声明配置
var config = new TcpServiceConfig();
config.ListenIPHosts = new IPHost[] { new IPHost("127.0.0.1:7789"), new IPHost(7790) };//同时监听两个地址
//载入配置
service.Setup(config);
service.Start();
创建TcpClient一、说明TcpClient是TCP客户端的基类,为抽象类,不可创建实例,须通过继承实现HandleReceivedData方法,该方法指示如何处理接收到的数据。
客户端 服务端发送都是封装了send方法
SimpleTcpClient tcpClient = new SimpleTcpClient();
tcpClient.Connected += (client, e) =>{};//成功连接到服务器
tcpClient.Disconnected += (client, e) =>{};//从服务器断开连接,当连接不成功时不会触发。
tcpClient.Received += (client, byteBlock ,requestInfo) =>
{//从服务器收到信息string mes = Encoding.UTF8.GetString(byteBlock.Buffer, 0, byteBlock.Len);Console.WriteLine($"接收到信息:{mes}");
};
//载入配置
tcpClient.Setup("127.0.0.1:7789");
tcpClient.Connect();
tcpClient.Send(Encoding.UTF8.GetBytes("RRQM"));
TcpClient和TcpService已经内置了多种发送方法,直接调用就可以发送。如果发送失败,则会立即抛出异常。
service.Send(“”);
最后大家如果喜欢我的文章,还麻烦给个关注, 希望net生态圈越来越好!
c#使用RRQMSocket实现tcp通信相关推荐
- 网络编程 UDP通信的过程 TCP通信过程 多线程文件上传
网络概述 协议 在网络之间传出数据时需要按照指定的标准来传输,标准中规定了数据的格式.大小.传输的方式.传输速率.形成统一规范->按照规范开发的代码->协议(应用层.传输层.网络层.链路层 ...
- pyqt tcp通信_实验十 基于PyQt界面的TCP通信程序(一).doc_学小易找答案
[简答题]请同学们找一个目前已学的知识点,出一个题目上传,不能是上课讲的程序和上机的题目 [简答题]请拍照模块五完成情况 [简答题]请拍照模块六完成情况 [计算题]书本80页,3-7;3-8;3-9; ...
- JAVA SE学习day_08:TCP通信、多线程(并联)
为了解决在程序中不同客户端在同一服务端中都可以进行数据发送的情况,要使用多线程将其进行并联操作 一.多线程 线程可以并发执行多个代码片段,使得这些代码片段直接运行是互不干涉的: 创建线程有两种方式, ...
- JAVA SE学习day_07:异常处理、TCP通信
一.异常中常见的方法 public static void main(String[] args) {System.out.println("程序开始了");try {String ...
- java tcp client断开重连_ESP8266_12 ESP8266客户端模式下的TCP通信
上一节说了UDP,这一节就聊聊TCP,毕竟它俩经常同时出现.优缺点上一节也提了一下:安全性好,速度慢. 除了这两点,还有就是: TCP通信之前是需要建立连接的,如同打电话之前先拨号一样,而UDP无连接 ...
- 几个经典的TCP通信函数
前言 在TCP通信中要使用到几个非常经典的函数( 点这里参考一个关于它们作用的形象比方 ),本文将对这几个函数进行一个简短的使用说明. socket函数 函数作用:创建一个网际字节流套接字 包含头文件 ...
- linux下TCP通信简单实例
linux下TCP通信简单实例 基于TCP(面向连接)的socket编程,分为服务器端和客户端 服务器端的流程如下: (1)创建套接字(socket) (2)将套接字绑定到一个本地地址和端口上(bin ...
- 小小聊天室,慢慢的回忆啊!(TCP 通信实现)
文章目录 前言 一.TCP 协议 二. TCP 通信 的实现 " 请求- 响应 " 模式: 通过 Socket 的编程顺序: 基于TCP协议的Socket编程,实现单向通讯 通过数 ...
- qint64转为qstring qt_Qt项目中TCP通信的实现方式经验总结(服务端部分)
总第20篇 本文接第19篇,继续梳理TCP通信过程中的重要知识.本文主要系统地讲解通信服务端部分,以供在以后的项目开发过程中参考.如果觉得不错可以关注专栏 面向加薪编程C/C++ ,第一时间接收文章更 ...
最新文章
- RDF -- 资源描述框架
- Boost::context模块fiber的circle测试程序
- nginx 返回动态Html,Nginx负载均衡
-Nginx动态更新upstream
- 国内敏捷项目协作工具亲测推荐
- 欧洲的数据中心与美国的数据中心如何区分?
- html5 摄像头 直播,详解HTML5 使用video标签实现选择摄像头功能
- 5 呼吸灯verilog与Systemverilog编码
- TCPUDP调试工具 Linux 版
- sed 批量替换字符串
- google 语音识别 VS 百度语音识别
- 聋人大学生终于开通了CNSD博客,CNSD在这里记录自己成长
- 流水灯c语言程序tm,51单片机LED流水灯课程设计任务书+论文
- 应广单片机003烧录器自定义封装使用技巧
- [激光原理与应用-39]:《光电检测技术-6》- 光干涉的原理与基础
- 通俗讲解:什么是Web
- 基于和芯星通UM482的RTK差分定位
- javascript:加入收藏的代码
- 数据库——mysql和sqlyog
- vmware, hyper-v 等虚拟机无法识别USB加密狗解决方案
- VS Code 自定义语法高亮 —— 入门
热门文章
- C++游戏系列——音符游戏(1)
- mysql性能调优 高可用_MySQL性能调优与架构设计——第 17 章 高可用设计之思路及方案...
- python绘制单线图_CAD制图管道单线图绘制详解.ppt
- 故障处理 软件 需求_「行业知识」地铁车辆故障智能处理分析
- java iso 8601_如何在iOS上获得ISO 8601日期?
- 校园无线网络规划与设计
- SpringBoot秒杀系统
- 英语发音规则---X字母
- 短小精悍的视频拍摄利器-Winavi Video Capture 绿色版_我是亲民_新浪博客
- android 通话记录分析,Android中联系人和通话记录详解(1)