Herm游戏服务器引擎程序员开发指导 第1章 概述

news/2024/7/9 18:20:26 标签: 网络, epoll, c/c++

http://blog.csdn.net/herm_lib     daemon.huang # gmail # com

 

1.1 什么是Herm

      Herm是一套快速开发高性能的网络应用的C++库,主要针对网络游戏服务器提供全套解决方案,包括接入、网游逻辑、数据缓存和持久化组件。但同时 Herm也适合可以用于即时通信、流媒体、文件下载、P2P(Socket组件实现的细节已经考虑到对TCP穿透的支持)等基于TCP/IP的网络应用。

      Herm包括的组件:

      (1)base

      最基础的组件,提供线程、一读一写线程不加锁的ring buffer、二进制消息解析器、支持多态的对象管理器和可支持多线程写入的完整的日志模块等。

       用面向对象和泛型的方法抽象了TCP/UDP的Socket IOs;抽象了Win32 Select、Linux epoll和FreeBSD kqueue的多路复用API。统一了三者水平模式(Level Triggered)的语义(一套代码在Win32/Linux/FreeBSD运行结果是一样的),Linux上也支持了边缘模式(Edge Triggered)。

      基于base其他功能,抽象出Network,Peer和Session对象,为外层提供了最终网络组件。

  (2)app

       为业务进程提供基础功能的框架,实现了linux上各种daemon进程常见的功能(start,stop等)。

       (3) cached

        基于(1)(2)实现的缓存和持久化的中间件。见这里介绍:http://blog.csdn.net/herm_lib/article/details/8171196

 

       Herm目前仅支持Linux/Windows/FreeBSD 32bits平台。调用者可以基于不同的需求使用不同的组件。

 

1.2 最简单的例子

      本节给出两个分别用app和base/socket组件实现的简单TCP Server的例子。所有的例子可以参考examples frameworks和multiplexors目录。

 

1.2.1  用app组件实现TCP Server   CSDN 例子竟然copy不了??!

1.2.2 用Socket组件实现TCP Server

       用Socket组件实现TCP Server更灵活,但实现者要做一些额外的工作,比如tcp stream解析,缓冲队列处理等等。

       首先实现一个AcceptHandler,处理Client连接,

代码没法copy到这里。。。只能给链接了。

http://www.cnblogs.com/herm/archive/2010/10/14/2773965.html

转载于:https://www.cnblogs.com/herm/archive/2012/11/24/2786402.html


http://www.niftyadmin.cn/n/937597.html

相关文章

Oracle技术之在OLTP OR OLAP上绑定变量

我在这里不会介绍OLTP和OLAP的概念,这些入行的DBA都是必懂的。今天的话题是绑定变量为什么适合在OLTP系统而不宜于OLAP系统。从某种角度上我们可以这样看待OLTP和OLAP系统,OLTP系统小查询多而OLAP系统基本都是大查询,而它们致命的区别就是执行…

java反射知识补充

反射:框架设计的灵魂 * 框架:半成品软件。可以在框架的基础上进行软件开发,简化编码 * 反射:将类的各个组成部分封装为其他对象,这就是反射机制 好处: 1. 可以在程序运行过程中,操作这些对象。(…

STL,ATL,WTL之间的联系和区别

一、STL即 Standard Template Library (标准模板库) STL是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。现在虽说它主要出现在C中,但在被引入C之前该技术就已经存在了很长的…

java线程的状态、线程池、Lambda表达式

线程的状态图 线程的状态 新建状态(New)、就绪状态(Runnable)、运行状态(Running)、阻塞状态(Blocked、Waiting、Timed_Waiting)、死亡状态(Terminated)。 线程的生命周期 新建状态 –> 就绪状态 :调用线程的start()方法。 就绪状态->运行状态 &#xff…

数组与指针一l

********************************************************** 常量与指针: const int* p; //p可变,p指向的内容不可变int const* p; //p可变,p指向的内容不可变int* const p; //p不可变,p指向的内容可变const int* const p; //p和…

我是怎样当上处长的?

为什么80%的码农都做不了架构师?>>> http://blog.sina.com.cn/s/blog_66ae49ef0102eewu.html 我是怎样当上处长的? 毛牧青/文 2006年8月16日下午 我今年34岁。去年,我被任命为某城市某市级机关的某处当处长。工作10年&#xff0c…

SQL Server索引进阶第八篇:唯一索引

SQL Server索引进阶第六篇:唯一索引 索引设计是数据库设计中比较重要的一个环节,对数据库的性能其中至关重要的作用,但是索引的设计却又不是那么容易的事情,性能也不是那么轻易就获取到的,很多的技术人员因为不恰当的创…

LINGO在数学建模中应用

LINGO主要功能是求解大型线性,非线性和整数规划问题。 一个优化模型有以下三部分组成: (1)目标函数.一般表示成求某个数学表达式的最大值或最小值. (2)决策变量.目标函数值取决于哪些变量. (3&…