博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Beetle简单构建TCP服务
阅读量:6088 次
发布时间:2019-06-20

本文共 2514 字,大约阅读时间需要 8 分钟。

      使用Beetle构建TCP服务应用是件非常简单的事情,它并不需要你去关注Socket细节,如果你想用Socket编写高性能的TCP服务,那你要关注的东西非常多,异步数据处理,大量连接下的线程管理和连接断相关资源处理等等复杂的事情;使用Beetle那以上的事情完全都可以不用关心,因为Beetle都已经帮你处理好.而你需要做的只需要简单的定义相关对象和绑定相关处理事件即可. 以下是通过Beetle实现一个简单的TCP服务

配置

 在使用组件的需要对组件进行初始,可以在配置文件进行实始化信息配置

配置了相关信息后,可以调用以下代码进行组件初始化

Beetle.TcpUtils.Setup("beetle");//初始化组件

初始化组件只能执行一次,可以在程序开始的时候调用.

现实TCP服务端

使用组件构建一个TCP服务是很简单,你并不需要关心Socket也不需要知道怎么用.组件提供一个ServerBase基础类,只需要继承它简单重写几个方法即可以完成TCP服务的编写.

class Program:Beetle.ServerBase    {        protected override void OnConnected(object sender, Beetle.ChannelEventArgs e)        {            base.OnConnected(sender, e);            C.WriteLine("{0} connected!", e.Channel.EndPoint);        }        protected override void OnDisposed(object sender, Beetle.ChannelDisposedEventArgs e)        {            base.OnDisposed(sender, e);            C.WriteLine("{0} disposed!", e.Channel.EndPoint);        }        protected override void OnError(object sender, Beetle.ChannelErrorEventArgs e)        {            base.OnError(sender, e);            C.WriteLine("{0} Error {1}!", e.Channel.EndPoint,e.Exception.Message);        }        protected override void OnReceive(object sender, Beetle.ChannelReceiveEventArgs e)        {            string value = e.Channel.Coding.GetString(e.Data.Array, e.Data.Offset, e.Data.Count);            C.WriteLine(value);            Beetle.StringMessage msg = new Beetle.StringMessage();            msg.Value = value;            e.Channel.Send(msg);        }    }

以上实现一个简单的TCP服务,并重写了4个方法分别是:

OnConnected 连接接入过程

OnDisposed    连接释放过程

OnError           连接处理错误过程

OnReceive       连接数据接收过程

实现一个TCP服务后,只需要创建相关对象并监听到对应的IP和端口即可

Program server = new Program();    server.Open(9321);    C.WriteLine("Server started @9321"); 

连接到服务端进行数据处理

组件可以通过TcpServer的CreateClient方法创建一个连接,在使用组件进行client连接的时候也需要做对应的实始化工具,和服务端实始化一样.配置好后只需要以下代码就能创建一个连接.

//连接到指定IP的端口服务    channel = Beetle.TcpServer.CreateClient(txtIPAddress.Text, 9321);    //绑定数据流接收事件    channel.DataReceive = OnReceive;    //连接断开事件    channel.ChannelDisposed += OnDisposed;    //开始接收数据    channel.BeginReceive();

创建连接后,需要发送一个消息也是很简单.

Beetle.StringMessage msg = new Beetle.StringMessage();    msg.Value = richTextBox1.Text;    channel.Send(msg);

通过StringMessage就可以向服务端发送一个string数据,当然这紧紧是一个基础的通讯;做过TCP的朋友应该知道这样一个消息是会存在粘包问题,也不能保服务端一次接收就能接收到这个string数据.在后面的章节里会讲述beetle如何处理粘包的问题,并进行对象数据发送.

运行效果

下载相关代码:

总结

在使用Beetle构建TCP服务比起传统Socket服务会简单很多,而使用的时候并不需要关心Socket的细节;不用担心如果管理连接和连接断开处理的工作,对于高并发下也完全不用关心怎样处理线程达到更佳的效果,以上这么多复杂和烦锁的工作Beetle都帮你完成了,而你将会有更多的时间去关心逻辑上的细节.

转载地址:http://yfvwa.baihongyu.com/

你可能感兴趣的文章
java基础---->正则表达式
查看>>
2.2013/06/13_log(n)+1
查看>>
关于加载iframe时进度条不消失的问题
查看>>
poj 3984迷宫问题【广搜】
查看>>
oracle ORA-01840:输入值对于日期格式不够长
查看>>
python基础知识~logger模块
查看>>
SIP入门(二):建立SIPserver
查看>>
Servlet3.0的异步
查看>>
WebService连接postgresql( 失败尝试)
查看>>
从头认识java-13.11 对照数组与泛型容器,观察类型擦除给泛型容器带来什么问题?...
查看>>
Python-MacOSX下SIP引起的pip权限问题解决方案(非取消SIP机制)
查看>>
从MFQ方法到需求分析
查看>>
android.view.WindowManager$BadTokenException: Unable to add window
查看>>
HDU5012:Dice(bfs模板)
查看>>
iphone openssh
查看>>
Linux下MEncoder的编译
查看>>
spark高级排序彻底解秘
查看>>
ylbtech-LanguageSamples-PartialTypes(部分类型)
查看>>
福建省促进大数据发展:变分散式管理为统筹集中式管理
查看>>
开发环境、生产环境、测试环境的基本理解和区别
查看>>