高效能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连接测试情况

下载

posted @ 2013-02-26 12:29  beetlex  阅读(4294)  评论(21编辑  收藏  举报