当前位置:  软件>C/C++软件

跨平台网络服务器框架 PSS

    来源:    发布时间:2014-12-18

    本文导语:  PSS 是易于开发,基于插件的,跨平台网络服务器框架,支持开发者使用插件(so或者dll)的方式,开发相关TCP和UDP的逻辑服务。 本服务框架基于ACE,可以在windows和linux下自适应编译运行。本服务框架的宗旨是尽量剥离网络IO和逻...

PSS 是易于开发,基于插件的,跨平台网络服务器框架,支持开发者使用插件(so或者dll)的方式,开发相关TCP和UDP的逻辑服务。

本服务框架基于ACE,可以在windows和linux下自适应编译运行。

本服务框架的宗旨是尽量剥离网络IO和逻辑开发者之间的关系,让逻辑开发者更专注于自己的业务,而网络IO部分完全由配置文件去实现。 运维管理者可以通过辅助的管理工具,获得框架运行状态,工作线程,数据流状态,连接状态等信息。辅助运维管理,问题排查。 另外,开发者还可以在完全脱离框架的基础上,利用框架周边工具,压力测试自己的逻辑模块,这样尽量减少上线前所可能出现的问题。

在使用框架前,你可以使用框架提供的小工具,压力测试当前框架的性能指标,作为是否采用的依据。 example下有专门的测试用例,可以提供开发者参考。 设计这个框架的目标不仅仅是一个网络IO的插件接口,而是一整套开发流程,尽量做到减少开发者的付出,规范开发过程(目前SVN上提供整套的框架测试工 具,具体功能请参考先读我.txt) 希望能和大家一步步完善这个体系,真正做到有价值的框架。

我的目标是,你用的爽,就是成功。也希望大家越来越喜欢它。 另外最新代码会发布在SVN上,如果你有SVN,最好从SVN上直接下载,我会定时打版本包放在download里面提供下载。

从0.91起,开始提供版本更新日志
重要提示,由于googlecode取消了上传下载服务,所以,如果你想获得当前代码的最新版本,请从SVN直接提取,downloads不会再提供更新。SVN下载地址为https://purenessscopeserver.googlecode.com/svn/trunk/

V0.94改进
服务器间连接支持指定本地IP和端口功能。(有些需求远端需要指定本地IP和端口)
添加单位时间连接量和断开量统计功能。
添加单位时间连接量和断开量统计告警功能。
添加告警邮件自动发送功能。
添加新的BuffPacket支持类型,支持String类型的导入导出。
修复Linux PSS关闭时在某些情况下程序不退出的BUG。
修改Reactor主线程为监控线程。
重新设计告警配置文件,并支持邮件告警功能。
添加对PSS的允许最大连接数的远程控制功能。
修复UDP数据发送的一个BUG。
优化对无头数据包解析用例的代码。
添加了数据包头信息代码样例。
修改例子代码支持新的PacketParse功能以及新接口。
添加日志跟踪器工具。
添加了自动添加和关闭指定监听端口功能,支持插件内管理以及管理工具管理。
开放关于链接别名的函数给逻辑插件使用。
添加服务器间连接异常的时候返回远程IP功能。
解决一个HTTP数据包解析造成堆栈崩溃的BUG。
添加定时器插件用例。
优化框架代码,减少不必要的代码,优化流程以及代码顺序。

V0.93改进
支持只有包头不含包体的数据。
添加了Websocket对接协议的PacketParse用例。
添加了Http对接协议的PacketParse用例。
添加了对ACE_DEBUG日志输出文本规格化的支持。
修复了一个ACE_DEBUG死锁的问题。
更新TcpPost用例,添加数据回发完整性判定。
添加了在Linux下对epollet模式的支持。
修复了一些Reactor和Proactor下的BUG。

V0.92改进
1. 优化ConnectHander的代码结构
2. 添加发送超时配置文件
3. 添加了新用例,ftp用例,实现相关了目录浏览,下载和上传(PSS插件以及测试客户端)。
4. 添加如果二级缓冲用例,实现共享内存和数据库的同步(PSS插件以及测试客户端)。
5. 添加了插件间相互调用用例,实现了插件间的通讯((PSS插件以及测试客户端)。
6. 添加Linux下自动设置当前工作目录的功能。
7. 添加了PSS自测插件功能,实现PSS数据包自测用例(PSS插件以及测试客户端)。
8. 更新了PassTCP工具,可以支持二进制和文本的数据包发送。
9. 重写了PSS日志接口,支持输出到屏幕和文件的选择,并支持文本和二进制的记录。
10.添加了Proxy代理服务器数据包转发插件,实现了PSS网关功能(PSS插件以及测试客户端)。
11.添加了新的API,允许插件可以获得工作线程的数量以及当前工作线程的ID。
12.添加了uint64位数据的网络字序和主机字序的转换函数。
13.添加了再Linux下自检当前文件并发数的功能,如果文件并发数小于配置文件设置则框架会自动尝试提升当前文件并发数,如果失败则提示框架启动失败。
14.添加了对core文件的设置,开发者可以通过配置core文件大小来启动当前PSS。
15.添加了发送缓冲区自检功能,当发送字节和对端收到字节不成正比时,按照配置文件的规则回收当前连接。
16.添加了对BACKLOG的设置,可以提升在大并发连接下的连接效率。

V0.91改进
1. 修改了dev_poll下设置并行最大连接数配置文件对应关系。
2. 再次更新PacketParse接口,优化了接口结构,使得开发者更清晰的看到自己要实现代码的地方。
3. 更新插件压力测试工具。支持TCP和UDP压力测试,并会生成测试报告。
4. 更新MakePacket回应包添加CommandID参数,你可以根据不同的连接ID决定处理你的发送组包逻辑(比如加解密的随机算法)
5. 服务器添加了对UDP recv超时的设置
6. 更新了UDP Proactor模式下的UDP设置参数。
7. 添加对IPv4和IPv6的支持。服务器可以使用IPV6的地址,但是前提是OS必须支持IPV6
8. 添加类视图文档,以PDF文档形式提供。
9. 更新插件压测工具,提供多线程压测插件功能。
10. 修改了TCP和TCP服务器间测试用例,实现了透传数据的压测用例。
11. 添加了Linux下结束进程的脚本
12. 添加了时间成本宏,你可以用于你的逻辑中,测试函数执行效能
13. 添加三个Try catch宏用于程序调控。你可以用于你的逻辑中,套在函数里。
14. 添加了服务器发送数据水位标,如果服务器发快客户端收慢,那么会有一个阀值保证正常的连接不受影响。
15. 修改了若干测试出的BUG,具体可以浏览SVN更新日志。
16. 添加了DEBUG模式,在debug下支持输出所有的数据包文件。这些数据包可以变为压测的回放的依据。


提供几个压测数据(TcpPass工具,可从PSS开源工具包中获得)
=============================================
压测IP:172.21.1.200, 压测端口:10002.(Linux ContOS6 DEBUG)
压测类型:TCP
压测开始时间为: 2013-09-18 11:07:42
压测结束时间为: 2013-09-18 12:06:00
压测线程数:10
创建成功连接数:10
成功发送数据包数:11675202
成功接收数据包数:11675202
连接失败数:0
发送失败数据包数:0
接收失败数据包数:0
连接成功百分比:100.000000%
发送数据包成功百分比:100.000000%
接收数据包成功百分比:100.000000%
=============================================

=============================================
压测IP:172.21.1.68, 压测端口:10002.(Windows7 DEBUG)
压测类型:TCP
压测开始时间为: 2013-09-16 09:55:58
压测结束时间为: 2013-09-16 10:38:09
压测线程数:10
创建成功连接数:10
成功发送数据包数:11514132
成功接收数据包数:11514132
连接失败数:3125
发送失败数据包数:0
接收失败数据包数:0
连接成功百分比:100.000000%
发送数据包成功百分比:100.000000%
接收数据包成功百分比:100.000000%
=============================================

作者: freeeyes

框架贡献者: 凹凸man,w1w,乔戈,Bobo

如需编译帮助,请阅读doc文件夹下的先读我.txt



    
 
 

您可能感兴趣的文章:

  • Java神经网络框架 Neuroph
  • 软件定义网络框架 OpenDaylight
  • 网络服务管理框架 NetDirector
  • 网络应用框架 Netty
  • NIO网络框架 ioserver
  • NIO网络框架 xSocket
  • 网络分析框架 Bro
  • 防火墙网络包记录框架 ulogd
  • Java神经网络框架 Encog for Java
  • 神经网络开源框架 joone
  • 异步网络编程框架 itachi
  • Java 神经网络框架 JNeuralNet
  • NIO 网络框架 NIO Framework
  • 高性能Java网络框架 MINA
  • 网络编程框架 NMSTL
  • TCP网络服务器框架 donkey_server
  • 网络服务器端开发框架 zevent
  • C++ 的网络服务器框架 SPServer
  • 网络通讯框架 jsVortex
  • 数据中心网络框架 Fastpass
  • centos 服务器,总是跳ping ,重启网络就好
  • 请问我的网络中怎么有些电脑能PING 通服务器,有些不能ping 服务器
  • kdevelop开发 网络程序 如何调试? 如何调试服务器端的程序
  • 请问如何用windows服务器通过网络来批量克隆linux系统?
  • 示助:Linux作服务器建立网络电台
  • redhat linux9.0,打开“网络服务器”,报:无法找到主机“smb:///”……,请检查拼写及代理服务器设置正确性
  • 讨论:C/S结构的网络游戏的服务器程序设计
  • Java的优势在网络,没有服务器能学Java吗?
  • 服务器/网络监控工具 ServerStatus
  • 网络和服务器监控系统 CactiFans
  • 网络服务器架设高手必进。。。。。谢谢
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • andriod下java socket网络编程:java socket客户端服务端代码示例
  • linux系统加入网络中的DNS服务
  • 重起网络服务的命令是什么?
  • 两台linux设备用串口线连起来,网络服务就启不来。
  • 头疼的问题,请指教关于linux网络服务的问题!
  • 请问IRIX系统里面用来做网络服务的文件是哪里啊?
  • 问个多线程网络服务程序的文件操作符的互斥问题
  • 网络服务管理 HyperPool
  • 类unix系统编写大规模响应网络服务程序使用什么套接字模型
  • Unix用来作网络服务器用那一种版本比较好啊……
  • Linux网络服务质量编程
  • 高性能异步网络服务框架 libgod
  • sos,代理服务器(ms proxy)下LINUX 访问网络的问题!!!!!!!!!
  • 帮朋友一问,用redhat做服务器,windows 2000 professional做工作站,可以组成工作网络吗
  • 如果打开了一个网络服务程序,但其所用的端口总是关闭着。这一般是什么原因呢?
  • 在C/S的网络结构中,服务器如何判断客户端是否在线,最好举例说明!谢谢
  • ~~~在线等待]]网络服务的问题,为什么别的机子不能访问我的HTTP,FTP等??
  • 怎么在服务器linux下用squid开通某台客户机的所有网络访问权限
  • linux网络服务器配置!跪求!可RMB交易!星期天晚上之前交!急急急!
  • 虚拟机smb服务已经启用,但访问时提示找不到网络路径
  • 向网络服务器发送数据的方法get()和post()之间的区别
  • Docker、Kubernetes、Neutron中的网络简介
  • 怎么用dos命令配置登陆网络,随便什么网络,举例就行~
  • 基于python实现的网络爬虫功能:自动抓取网页介绍
  • 系统网络问题之网络配置
  • 分布式CAP理论介绍:一致性(Consistency),可用性(Availability),容忍网络分区(Partition tolerance)
  • 网络爬虫/网络蜘蛛 larbin
  • 应对 Docker 网络功能难题的挑战与思考
  • 如何将运行dos的机子联入网络,或在dos下使用网络硬盘
  • Android及andriod无线网络Wifi开发的几点注意事项
  • linux不用命令方式读文件获取网络流量,如何使用C函数调用获取网络流量信息?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3