高效能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连接测试情况
访问Beetlex的Github