BeetleX小试牛刀

BeetleX-轻量级高性能 TCP 通讯组件

1、用.net core 实现tcp 协议通讯,利用开源组件BeetleX搭建Demo.

2、收到消息后用Reids 接收。

3、用Redis 写监听程序,把接收到的消息,打印出来。

复制代码
 1 using BeetleX;
 2 using BeetleX.EventArgs;
 3 using BeetleX.Redis;
 4 
 5 /// <summary>
 6 /// 服务器端
 7 /// </summary>
 8 class Program: ServerHandlerBase
 9 {
10     private static BeetleX.IServer mServer;
11   
12 
13     static void Main(string[] args)
14     {
15 
16 
17         mServer = SocketFactory.CreateTcpServer<Program>();
18         mServer.Open();
19 
20         #region redis init
21         DefaultRedis.Instance.DataFormater = new JsonFormater();
22         DefaultRedis.Instance.Host.AddWriteHost("127.0.0.1");
23         #endregion
24 
25         Console.WriteLine(mServer.Status);
26         Console.Read();
27     }
28 
29     protected override void OnLogToConsole(IServer server, ServerLogEventArgs e)
30     {
31 
32         Console.WriteLine($"{DateTime.Now}\t{e.Type}\t{e.Session?.RemoteEndPoint} {e.Message}");
33     }
34     public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
35     {
36         base.SessionReceive(server, e);
37         var stream = e.Stream.ToPipeStream();
38         if (stream.TryReadLine(out string line))
39         {
40             Console.WriteLine(line);
41             var now = DateTime.Now;
42             stream.WriteLine($"{now}");
43 
44             //RedisSet(now.ToString(),line);
45             DefaultRedis.Publish("emps", line);
46 
47             e.Stream.Flush();
48         }
49     }
50 
51     //private void RedisSet(string key,string msg)
52     //{
53     //    DefaultRedis.Set(key, msg);
54     //}
55 }
View Code
复制代码
复制代码
 1 //客户端代码
 2 using BeetleX;
 3 using BeetleX.Clients;
 4 
 5 
 6 var client = SocketFactory.CreateClient<AsyncTcpClient>("localhost", 9090);
 7 client.Connect();
 8 var stream = client.Stream.ToPipeStream();
 9 while (true)
10 {
11     string? value = Console.ReadLine();
12     stream.WriteLine($"{DateTime.Now} {value}");
13     client.Stream.Flush();
14     if (stream.TryReadLine(out string line))
15     {
16         Console.WriteLine(line);
17     }
18 }
View Code
复制代码
复制代码
 1 //监听端代码
 2 using BeetleX.Redis;
 3 
 4 DefaultRedis.Instance.DataFormater = new JsonFormater();
 5 DefaultRedis.Instance.Host.AddWriteHost("127.0.0.1");
 6 var subscribe = DefaultRedis.Subscribe();
 7 subscribe.Register<string>("emps", e =>
 8 {
 9     Console.WriteLine($"Receive  {e}");
10 });
11 subscribe.Listen();
12 
13 Console.ReadKey();
View Code
复制代码

 

posted @   烈火寒冰  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示