Beetle.Express是Beetle相应的免费版Tcp通讯组件,Beetle.Express提供基础的TCP通讯封装,虽然只具备了基础功能,但在TCP吞吐上有着和Beetle一样出色的性能.组件是通过队列的方式处理控制TCP数据的发送和接收,在发送数据的时候你只关心操作即可,不必关心不停地调用发送方法会不会导致缓存区益出的情况.组件还提供了用于管理连接接入,断开和数据接收等事件,使开发人员对于连接的管理更方便.

使用配置

组件在使用之前需要进行一个简单的配置,主要是描述服务端的一个监听等信息

  <configSections><section name="serverSection" type="Beetle.Express.ServerSection, Beetle.Express"/></configSections><serverSection host=""port="8088"receiveBufferSize="4096"receiveDataPoolSize="1000"sendBufferSize="4096"handler="HelloWorld.Program,HelloWorld"/>

以简配置在所有IP的8088端口打开监听服务

服务代码

配置完成后,只需要针对相关配置打开TCP服务即可

    class Program : IServerHandler{static void Main(string[] args){TcpServer server = new TcpServer();server.Open("serverSection");Console.WriteLine("Start {0}@{1}", server.Host, server.Port);System.Threading.Thread.Sleep(-1);}public void Connect(TcpServer server, ChannelConnectEventArgs e){Console.WriteLine("{0} connected", e.Channel.EndPoint);}public void Disposed(TcpServer server, ChannelEventArgs e){Console.WriteLine("{0} disposed", e.Channel.EndPoint);}public void Error(TcpServer server, ErrorEventArgs e){Console.WriteLine("{0} error:{1}", e.Channel.EndPoint, e.Error.Message);}public void Receive(TcpServer server, ChannelReceiveEventArgs e){Data data = new Data();byte[] hw = Encoding.ASCII.GetBytes("Hello World");data.SetBuffer(hw, hw.Length);server.Send(data, e.Channel);}public void SendCompleted(TcpServer server, ChannelSendEventArgs e){}}

这样一个简单的Hello Word程序就完成,你只需要简单地telnet到这个端口并发收信息就会收到一个Hello Word的回复

组件性能

在网络吞吐能力方面组件继承了beetle出色的处理能力.在一台E1230V的PC上5000个长连接,每秒处理5W的请求应答其CPU使用率不到10%.

  • 1000连接测试情况
  • 5000连接测试情况

下载

转载于:https://www.cnblogs.com/smark/archive/2013/02/26/2933337.html

高效能TCP通讯基础组件Beetle.Express相关推荐

  1. 使用Beetle.Express简单构建高吞吐的TCPUDP应用

    在Beetle.Express1.2中加了UDP支持,而整体的设计结构也做了调整.只需要通过简单的配置就能实现高吐的TCP&UDP应用.由于组件引用UDP服务同样也支持会话状态所以对于服务是T ...

  2. iOS 高可控性日历基础组件 - SKCalendarView 的使用和实现思路的分享

    阅读 61 收藏 5 2017-04-02 原文链接:http://www.jianshu.com/p/ce4c64a4d437 SKCalendarView 是一个高可控性的日历基础组件,为了提高应 ...

  3. Beetle在TCP通讯中使用协议分析器和自定义协议对象

    在处理TCP数据的时候我们需要考虑一个粘包的问题,所谓的粘包就是本次接收的数据不一定完整对应对方发送的数据.对方发送的一次数据有可能需要接收多次才能完成,实际要处理的情况要复习一点;为了解决点包问题所 ...

  4. 【自我管理】精力,而非时间,是高效能的基础

    精力,而非时间,是高效能的基础 摘至 <精力管理> 这个看法大大改变了我们对持续高效能的动力的认识.它还促使我们的委托人极大地改变了他们安排生活的方式,包括他们的个人生活和职业生活.他们所 ...

  5. TCP通讯处理粘包详解

    一般所谓的TCP粘包是在一次接收数据不能完全地体现一个完整的消息数据.TCP通讯为何存在粘包呢?主要原因是TCP是以流的方式来处理数据,再加上网络上MTU的往往小于在应用处理的消息数据,所以就会引发一 ...

  6. TCP IP基础知识的复习

    TCP/IP网络协议栈分为应用层(Application).传输层(Transport).网络层(Network)和链路层(Link)四层.如下图所示 两台计算机通过TCP/IP协议通讯的过程如下所示 ...

  7. .net core高性能通讯开源组件BeetleX

    BeetleX beetleX是基于dotnet core实现的轻量级高性能的TCP通讯组件,使用方便.性能高效和安全可靠是组件设计的出发点!开发人员可以在Beetlx组件的支持下快带地构建高性能的T ...

  8. SpringCloud基础组件总结,与Dubbo框架、SpringBoot框架对比分析

    一.基础组件总结 1.文章阅读目录 1).基础组件 Eureka组件,服务注册与发现 Ribbon和Feign组件,实现负载均衡 Hystrix组件,实现服务熔断 Turbine组件,实现微服务集群监 ...

  9. tcp丢包率_网络编程 | TCP/IP基础知识

    在2017年10月深圳 Cocos 沙龙上,有幸结识了社区中大名顶顶的Colin,Shawn在论坛上第一次看到Colin的团队用CocosCreator制作的<热血暗黑>时就被深深地震撼到 ...

最新文章

  1. python网络爬虫程序技术,Python网络爬虫程序技术
  2. 【sublime text3】破解 最近破解码 /激活成功,但是过一会就提示激活码失效的 Build3143...
  3. extjs--combox用法
  4. 什么时候使用Apache Camel?
  5. php 匹配图片路径_php正则匹配图片路径原理与方法
  6. Linux下Makefile的automake生成全攻略
  7. 前端学习(2892):如何异步请求封装
  8. java 导出excel 例子_java导出Excel例子
  9. 阿里推出 PolarFS 分布式文件系统:将存储与计算分开,提升云数据库性能(附论文)
  10. 原生JS去除二维数组中重复了的一维数组
  11. 50行javaScript代码实现简单版的 call , apply ,bind 【中级前端面试基础必备】
  12. UVA1292-----Strategic game-----树形DP解决树上的最小点覆盖问题
  13. windows游戏编程大师技巧光盘
  14. 淘宝客APP如何配置阿里妈妈sdk详细教程(uniapp配置)
  15. SQL Server修改表结构时,不允许保存更改,阻止保存要求重新创建表的更改
  16. 行业json数据以及elementui级联格式
  17. c语言中乘法和除法哪个优先,C语言运算符和优先级
  18. 阿里云 语音通知 语音验证码 收不到 白名单
  19. linux 多线程 semaphore ,Linux下多线程编程-Pthread和Semaphore使用.doc
  20. Windows小技巧 -- 命令行窗口打开指定目录的资源管理器

热门文章

  1. ZStack平台连接iSCSI存储构建云计算服务
  2. 【windows下】带绘图功能的截图软件
  3. java双向涡轮_厉害了!首座涡轮式全互通立交,双向16车道,徐州这个地方是要上天啊!...
  4. 壁纸 - 热门高清图片和背景主题
  5. knife4j文档请求异常(swagger页面无法渲染)
  6. 九九重阳节,十跪父母恩
  7. 高科技计算机作文600,生活在高科技时代优秀作文600字
  8. 互信息特征选择python_基于互信息的特征选择方法杂谈
  9. Udesk即时通讯网页插件专用链接传参介绍
  10. 右键菜单加上“管理员取得所有权”