【RRQMSocket】C# 创建TCP客户端,对应RRQM服务器或其他服务器

文章目录

    • 一、概述
    • 二、程序集源码、Demo下载
        • 2.1 源码位置
        • 2.2 Demo位置
    • 三、安装
    • 四、普通模式下创建TcpClient
        • 4.1 说明
        • 4.2 建立TcpClient继承类
        • 4.3连接到服务器
    • 五、简单模式下创建TcpClient
    • 六、发送消息


一、概述

首先我们先来介绍一下RRQM TcpClient的一些功能

  1. 简单易用。
  2. 多线程。
  3. 适配器预处理,一键式解决分包、粘包、对象解析(如HTTP,Json)等。
  4. 超简单的同步发送、异步发送、接收等操作。
  5. 基于事件驱动,让每一步操作尽在掌握。
  6. 独立线程内存池(每个线程拥有自己的内存池)

二、程序集源码、Demo下载

2.1 源码位置

RRQMSocket

2.2 Demo位置

RRQMBox

三、安装

安装RRQMSocket即可,具体步骤详看链接博客。

VS、Unity安装和使用Nuget包

四、普通模式下创建TcpClient

4.1 说明

TcpClient是TCP客户端基类,必须实现HandleReceivedData方法,该方法指示如何处理已接收数据或经过适配器转换的对象。所以具体创建过程如下。

4.2 建立TcpClient继承类

通过继承的方式,实现HandleReceivedData方法。

class MyTcpClient : RRQMSocket.TcpClient
{
     
    protected override void HandleReceivedData(ByteBlock byteBlock, object obj)
    {
     
        string mes = Encoding.UTF8.GetString(byteBlock.Buffer, 0, (int)byteBlock.Length);
        Console.WriteLine($"接收到信息:{
       mes}");
    }
}

4.3连接到服务器

MyTcpClient tcpClient = new MyTcpClient();

tcpClient.Connected += (client, e) =>
{
    //成功连接到服务器
};

tcpClient.Disconnected += (client, e) =>
{
    //从服务器断开连接,当连接不成功时不会触发。
};


//声明配置
var config = new TcpClientConfig();
config.RemoteIPHost = new IPHost("127.0.0.1:7789");//远程IPHost
config.BufferLength = 1024 * 64;//缓存池容量
config.BytePoolMaxSize = 512 * 1024 * 1024;//单个线程内存池容量
config.BytePoolMaxBlockSize = 20 * 1024 * 1024;//单个线程内存块限制
config.Logger = new Log();//日志记录器,可以自行实现ILog接口。
config.SeparateThreadReceive = false;//独立线程接收,当为true时可能会发生内存池暴涨的情况
config.DataHandlingAdapter = new NormalDataHandlingAdapter();//设置数据处理适配器
config.OnlySend = false;//仅发送,即不开启接收线程,同时不会感知断开操作。
config.SeparateThreadSend = false;//在异步发送时,使用独立线程发送

//载入配置
tcpClient.Setup(config);

tcpClient.Connect();

五、简单模式下创建TcpClient

普通模式的创建,很大程度的可以灵活使用,但是有时候,我们只想搭建一个简单的客户端,那么这时候,直接创建SimpleTcpClient即可。

 SimpleTcpClient tcpClient = new SimpleTcpClient();

 tcpClient.Connected += (client, e) =>
 {
     
     //成功连接到服务器
 };

 tcpClient.Disconnected += (client, e) =>
 {
     
     //从服务器断开连接,当连接不成功时不会触发。
 };

 tcpClient.Received += (client, byteBlock, obj) =>
 {
     
     //客户端接收信息
     string mes = Encoding.UTF8.GetString(byteBlock.Buffer, 0, byteBlock.Len);
 };

 //声明配置
 var config = new TcpClientConfig();
 config.RemoteIPHost = new IPHost("127.0.0.1:7789");//远程IPHost
 config.BufferLength = 1024 * 64;//缓存池容量
 config.BytePoolMaxSize = 512 * 1024 * 1024;//单个线程内存池容量
 config.BytePoolMaxBlockSize = 20 * 1024 * 1024;//单个线程内存块限制
 config.Logger = new Log();//日志记录器,可以自行实现ILog接口。
 config.SeparateThreadReceive = false;//独立线程接收,当为true时可能会发生内存池暴涨的情况
 config.DataHandlingAdapter = new NormalDataHandlingAdapter();//设置数据处理适配器
 config.OnlySend = false;//仅发送,即不开启接收线程,同时不会感知断开操作。
 config.SeparateThreadSend = false;//在异步发送时,使用独立线程发送

 //载入配置
 tcpClient.Setup(config);

 tcpClient.Connect();

六、发送消息

完成以上步骤后,就可以拥有一个高性能的TCP客户端,在TcpClient下,调用Send相关函数即可,此时可以用NetAssist进行测试。
【RRQMSocket】C# 创建TCP客户端,对应RRQM服务器或其他服务器_第1张图片

【RRQMSocket】C# 创建TCP客户端,对应RRQM服务器或其他服务器_第2张图片

你可能感兴趣的