zoukankan      html  css  js  c++  java
  • 高效能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
  • 相关阅读:
    web安全记录
    jquery uploadify插件多文件上传
    在java中生成二维码,并直接输出到jsp页面
    条形码/二维码之开源利器ZXing图文介绍
    FCKeditor插件开发实例:uploadify多文件上传插件
    FCKeditor 插件开发 示例
    Spring技术_邮箱注册_激活_获取验证码
    jquery的uploadify上传jsp+servlet
    PHP变量类型
    thinkphp环境变量配置
  • 原文地址:https://www.cnblogs.com/smark/p/2933337.html
Copyright © 2011-2022 走看看