高效能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

.net 稳定 高效 易用 可同步 TCP 通信框架 使用平台: WinXP,WIN7,WIN8,WINCE,WINPHONE。 使用.net 2.0 框架。 主要功能介绍: 1、可以代替 Oracle,Mysql客户端 在不安装Oracle,MySql客户端的情况下访问, 对数据库进行间接访问(需开始框架的服务器端)。 2、可以使本来没有网经功能的Sqlite具有网络访问的能力。(也是需要开启服务器端) 以上两点可以兼容现有代码生成器时,客户端代码仅需要特别小的改动就可以。 3、基本功能。可以实现聊天,传文件,图片。 4、使用长连接,有断线自动连接功能,心跳包。 5、使用自定义数据包协议,自建Session机制加强数据连接安全。 6、框架稳定,支持高并发。 7、简单的事件处理机制。使用更加简单。 8、支持同步处理,使程序的开发更架简单,不需要另行回调处理。 下载地址: 使用方式: 首选需要 引用 DataUtils.v1.1.dll。DataUtils 内包含客户端与服务器端 处理类。 1、服务器端 代码示例。 设置服务器端默认端口 ,不设置端口会使用默认端口 TcpSettings.DefultPort = 8511; 既可以使用静态默认对象,也可以创建服务器端对象。 SocketListener server= new SocketListener(); 对象创建后 注册一些事件,以接收客户端发送的信息。 SocketListener.Server.RegeditSession += new Feng.Net.Tcp.SocketListener.RegeditSessionEventHandler(server_RegeditSession); RegeditSession 事件用于是否允许客户端连接此服务器。可以使用用户名,密码的核对方式。 SocketListener.Server.DataReceive += new SocketListener.DataReceiveEventHandler(server_DataReceive); DataReceive 在这个事件里处理接收到的数据。 事件注册完成就可以打开监听 SocketListener.Server.StartListening(); 2、客户端 代码示例 设置服务器的IP地址 TcpSettings.DeafultIPAddress = "192.168.1.3"; TcpSettings.DefultPort = 8511;//不设置端口会使用默认端口。 这样就可以使用默认的静态客户端了。 也可以自己创建对象。 客户端创建后需要在Connected事件注册用户,以限制某些用户是否可以使此链接。用户来源可以是数据库等。 void client_Connected(object sender, SocketClient sh) { Client.RegeditSession("aaa", "bbb"); } 发送文字消息给其他用户 SocketClient.Client.SendToOtherUser(string user, string text); //USER代表发达的目白用户,text表示为发送的内容。 发送图片,音频,视屏可以使用 SocketClient..SendToOtherUser(string user, byte[] data)////USER代表发达的目白用户,data表示为发送的内容。 data数据中数据有多种类型时可以使用 using (Feng.IO.BufferWriter bw = new Feng.IO.BufferWriter()) { bw.WriteBitmap(new Bitmap(100, 100)); bw.Write(text);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值