高性能异步Socket框架

这是一个L/V(Length/Value)模型的异步Socket框架.L是指发送byte数组的长度,L固定为10个byte,V是指要发送的byte数组.可以用于处理超长的消息,处理完成的响应也按照L/V模型发送,客户端接收可以参考服务端解析过程.

eg:

1.第一次收到的byte[]:0 0 0 0 0 0 1 1 1 2 28 30 18 26 88 99 77
那么先取0 0 0 0 0 0 1 1 1 2,得到长度为1112,对后面的byte(从index10以后)进行存储
2.第二次收到的byte[]:5 10 0 66 0 0 1 1 1 2 28 30 18 26 88 99 44
那么继续存储收到的byte[],在之前的存储上追加
...
...
n.直到第n次收到byte[],在之前的存储上追加,当存储的byte[]长度等于1112时停止接收,开始解析,解析完成按照L/V模型组织发送,发送完毕继续步骤1.(中间遇到过程错误,将关闭会话)

特别提醒:

1.仅支持UTF8编码解析,原因是UTF8支持任何语言.采用Node.js做测试时,只用了英文字符做发送,原因是UTF8编码英文字符的长度和字符串长度一致(1:1).
2.Command必须实现CommandBase类,并且有一个无参构造函数(当然你可以修改代码,移除此限制,多数情况下这也完全够用),实现的Command类必须名称以Command结尾(大小写敏感).eg:TCommand,客户端发送命令参考Node.js实现,Command为T,则正确匹配TCommand处理返回结果.
3.配置文件参考server.cfg,生成时需拷贝到生成目录(vs可以通过属性设置实现).
4.有很多实现可以提取出接口,进一步优化使得更加容易扩展,更加灵活.
5.如果发现任何问题和不足之处或者BUG请email给我:[email protected]

https://github.com/kingge168/HSocket

时间: 2025-01-13 19:12:14

高性能异步Socket框架的相关文章

Voovan 是一个高性能异步网络框架和 HTTP(Java)

Voovan 是一个高性能异步网络框架和 HTTP 服务器框架,同时支持 HTTP 客户端抓取.动态编译支持.数据库访问封装以及 DateTime.String.Log.反射.对象工具.流操作.文件操作.异步双向通道等功能.旨在提供可靠.方便.可单元测试的代码.它是一个无任何依赖的独立工具包,希望能够方便广大开发者快速的实现应用. 作者:@愚民日记 地址:http://git.oschina.net/helyho/Voovan http://www.oschina.net/news/80909/

【转】C#高性能大容量SOCKET并发(二):SocketAsyncEventArgs封装

http://blog.csdn.net/sqldebug_fan/article/details/17557341 1.SocketAsyncEventArgs介绍 SocketAsyncEventArgs是微软提供的高性能异步Socket实现类,主要为高性能网络服务器应用程序而设计,主要是为了避免在在异步套接字 I/O 量非常大时发生重复的对象分配和同步.使用此类执行异步套接字操作的模式包含以下步骤:1.分配一个新的 SocketAsyncEventArgs 上下文对象,或者从应用程序池中获

C#高性能大容量SOCKET并发(二):SocketAsyncEventArgs封装

1.SocketAsyncEventArgs介绍 SocketAsyncEventArgs是微软提供的高性能异步Socket实现类,主要为高性能网络服务器应用程序而设计,主要是为了避免在在异步套接字 I/O 量非常大时发生重复的对象分配和同步.使用此类执行异步套接字操作的模式包含以下步骤:1.分配一个新的 SocketAsyncEventArgs 上下文对象,或者从应用程序池中获取一个空闲的此类对象.2.将该上下文对象的属性设置为要执行的操作(例如,完成回调方法.数据缓冲区.缓冲区偏移量以及要传

写自己的Socket框架(一)

本系列仅介绍可用于生产环境的C#异步Socket框架,如果您在其他地方看到类似的代码,不要惊讶,那可能就是我在参考开源代码时,直接“剽窃”过来的. 1.在脑海里思考一下整个socket的链接的处理流程,于是便有了下图. 2.首先就开始监听,代码如下: public override bool Start() { this._socket = new System.Net.Sockets.Socket(AddressFamily.InterNetwork, SocketType.Stream, P

Java异步NIO框架Netty实现高性能高并发

1. 背景 1.1. 惊人的性能数据 近期一个圈内朋友通过私信告诉我,通过使用Netty4 + Thrift压缩二进制编解码技术,他们实现了10W TPS(1K的复杂POJO对象)的跨节点远程服务调用.相比于传统基于Java序列化+BIO(同步堵塞IO)的通信框架.性能提升了8倍多. 其实,我对这个数据并不感到吃惊,依据我5年多的NIO编程经验.通过选择合适的NIO框架,加上高性能的压缩二进制编解码技术,精心的设计Reactor线程模型,达到上述性能指标是全然有可能的. 以下我们就一起来看下Ne

socket框架续,异步socket

上一篇对socket进行了简单的封装,但是由于send和recv都是同步的,真正使用的时候一般都需要异步的,如果让应用层自己负责维护异步线程,那这个框架就不实用了,所以异步收发还是要有的. 不知道怎么说起,先占坑以后再慢慢说吧. 我的实现方法: 1.创建SendBuffer和RecvBuffer,包装发送和接收的消息. 2.使用循环队列创建发送队列和接收队列,异步调用只需要将消息加入队列.(循环队列的实现可以参考 http://www.cnblogs.com/wolfred7464/p/4337

《Linux高性能服务器编程》学习总结(八)——高性能服务器程序框架

第八章      高性能服务器程序框架 我们将服务器一般分为三个主要模块,I/O处理单元.逻辑单元及存储单元.常用的服务器模型有C/S模型和P2P模型,比较简单.我们来看一下网络编程中的I/O模型.首先我们要了解阻塞模型和非阻塞模型的区别,socket在创建时默认是阻塞的,可以在socket系统调用的第二个参数传递SOCK_NONBLOCK标志或者通过fcntl将其设置为非阻塞,针对阻塞I/O的系统调用可能因为无法立即完成而被系统挂起,直到等待的事件发生为止,而非阻塞I/O的系统调用则会立即返回

新手入门:目前为止最透彻的的Netty高性能原理和框架架构解析(阿里)

1.引言 Netty 是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端. 本文基于 Netty 4.1 展开介绍相关理论模型,使用场景,基本组件.整体架构,知其然且知其所以然,希望给大家在实际开发实践.学习开源项目方面提供参考. 本文作者的另两篇<高性能网络编程(五):一文读懂高性能网络编程中的I/O模型>.<高性能网络编程(六):一文读懂高性能网络编程中的线程模型>也写的很好,有兴趣的读者可以一并看看. 关于作者: 陈彩华(

Python 开源异步并发框架的未来(转)

Python 开源异步并发框架的未来 fantix 1.1k 2014年04月16日 发布 推荐 4 推荐 收藏 31 收藏,8.9k 浏览 呵呵,这个标题有点大,其实只是想从零开始介绍一下异步的基础,以及 Python 开源异步并发框架的发展和互操作性. 另外,这是我在 OSTC 2014 做的一个 20140330-OSTC-分论坛1王川 http://v.youku.com/v_show/id_XNjk2ODI0ODQ4.html ,幻灯片在这里,欢迎拍砖. 开源 Python 是开源的,