高效能TCP通讯基础组件Beetle.Express
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相关推荐
- 使用Beetle.Express简单构建高吞吐的TCPUDP应用
在Beetle.Express1.2中加了UDP支持,而整体的设计结构也做了调整.只需要通过简单的配置就能实现高吐的TCP&UDP应用.由于组件引用UDP服务同样也支持会话状态所以对于服务是T ...
- iOS 高可控性日历基础组件 - SKCalendarView 的使用和实现思路的分享
阅读 61 收藏 5 2017-04-02 原文链接:http://www.jianshu.com/p/ce4c64a4d437 SKCalendarView 是一个高可控性的日历基础组件,为了提高应 ...
- Beetle在TCP通讯中使用协议分析器和自定义协议对象
在处理TCP数据的时候我们需要考虑一个粘包的问题,所谓的粘包就是本次接收的数据不一定完整对应对方发送的数据.对方发送的一次数据有可能需要接收多次才能完成,实际要处理的情况要复习一点;为了解决点包问题所 ...
- 【自我管理】精力,而非时间,是高效能的基础
精力,而非时间,是高效能的基础 摘至 <精力管理> 这个看法大大改变了我们对持续高效能的动力的认识.它还促使我们的委托人极大地改变了他们安排生活的方式,包括他们的个人生活和职业生活.他们所 ...
- TCP通讯处理粘包详解
一般所谓的TCP粘包是在一次接收数据不能完全地体现一个完整的消息数据.TCP通讯为何存在粘包呢?主要原因是TCP是以流的方式来处理数据,再加上网络上MTU的往往小于在应用处理的消息数据,所以就会引发一 ...
- TCP IP基础知识的复习
TCP/IP网络协议栈分为应用层(Application).传输层(Transport).网络层(Network)和链路层(Link)四层.如下图所示 两台计算机通过TCP/IP协议通讯的过程如下所示 ...
- .net core高性能通讯开源组件BeetleX
BeetleX beetleX是基于dotnet core实现的轻量级高性能的TCP通讯组件,使用方便.性能高效和安全可靠是组件设计的出发点!开发人员可以在Beetlx组件的支持下快带地构建高性能的T ...
- SpringCloud基础组件总结,与Dubbo框架、SpringBoot框架对比分析
一.基础组件总结 1.文章阅读目录 1).基础组件 Eureka组件,服务注册与发现 Ribbon和Feign组件,实现负载均衡 Hystrix组件,实现服务熔断 Turbine组件,实现微服务集群监 ...
- tcp丢包率_网络编程 | TCP/IP基础知识
在2017年10月深圳 Cocos 沙龙上,有幸结识了社区中大名顶顶的Colin,Shawn在论坛上第一次看到Colin的团队用CocosCreator制作的<热血暗黑>时就被深深地震撼到 ...
最新文章
- python网络爬虫程序技术,Python网络爬虫程序技术
- 【sublime text3】破解 最近破解码 /激活成功,但是过一会就提示激活码失效的 Build3143...
- extjs--combox用法
- 什么时候使用Apache Camel?
- php 匹配图片路径_php正则匹配图片路径原理与方法
- Linux下Makefile的automake生成全攻略
- 前端学习(2892):如何异步请求封装
- java 导出excel 例子_java导出Excel例子
- 阿里推出 PolarFS 分布式文件系统:将存储与计算分开,提升云数据库性能(附论文)
- 原生JS去除二维数组中重复了的一维数组
- 50行javaScript代码实现简单版的 call , apply ,bind 【中级前端面试基础必备】
- UVA1292-----Strategic game-----树形DP解决树上的最小点覆盖问题
- windows游戏编程大师技巧光盘
- 淘宝客APP如何配置阿里妈妈sdk详细教程(uniapp配置)
- SQL Server修改表结构时,不允许保存更改,阻止保存要求重新创建表的更改
- 行业json数据以及elementui级联格式
- c语言中乘法和除法哪个优先,C语言运算符和优先级
- 阿里云 语音通知 语音验证码 收不到 白名单
- linux 多线程 semaphore ,Linux下多线程编程-Pthread和Semaphore使用.doc
- Windows小技巧 -- 命令行窗口打开指定目录的资源管理器
热门文章
- ZStack平台连接iSCSI存储构建云计算服务
- 【windows下】带绘图功能的截图软件
- java双向涡轮_厉害了!首座涡轮式全互通立交,双向16车道,徐州这个地方是要上天啊!...
- 壁纸 - 热门高清图片和背景主题
- knife4j文档请求异常(swagger页面无法渲染)
- 九九重阳节,十跪父母恩
- 高科技计算机作文600,生活在高科技时代优秀作文600字
- 互信息特征选择python_基于互信息的特征选择方法杂谈
- Udesk即时通讯网页插件专用链接传参介绍
- 右键菜单加上“管理员取得所有权”