中转传输概要设计

中转传输的消息架构为模拟MFC的消息架构,请參考我的上一篇文章。

1. 概述

中转server採用事件驱动的方式,与socket结合。其层次例如以下:

在事件驱动层中,将相关消息发送给相应的用户事件处理函数处理。

在命令解析层中发送和接收数据。在接收到数据时,须要验证数据合法性,收到一帧完整的数据后调用消息驱动层的send相关方法,调用该类方法后会将消息传递给用户事件处理中。

在命令解析层中,会引入socket控制,同一时候管理多个socket的读。

在用户事件处理中,须要像MFC那样,定义消息处理的映射表。仅仅有在用户层定义了消息映射表,命令解析层接收到的命令才干被处理,否则被丢弃。

2. 事件驱动层

消息分两种:post类消息和Send类消息。

Post类消息首先须要将消息放入消息列表中,由消息处理线程负责派发消息,所以消息的发送与处理是异步的。

Send类消息不须要经过消息列表,直接由send相关方法派发消息,所以仅仅有等待消息被处理完毕send方法才返回。

post事件驱动流程图:

事件驱动贯穿整个流程,一般事件驱动流程退出,则程序退出。

2.1 事件信息

事件分为例如以下两种:

a. 整型事件,用一个整型数字标志一个事件,该事件參考MFC的基本结构;

b. 字符串事件,以命令的形式定义一个事件;

事件目标:

事件目标能够是目标的直接handle,也能够是目标的名称。

2.2 基本事件

我们规定在1024以内的整型事件为基本事件,由事件驱动层定义。用户能够定义不论什么大于1024的事件,不同对象之间事件号能够反复。

3. Socket控制


在socket控制中,主要监控socket的读和异常状态。对于写上层能够直接调用send发送数据。

外部假设须要释放已经放入到控制列表的sokcet,必须调用控制层的接口。

4. 用户事件处理

时序图例如以下:

登录、心跳和退出流程

转发文件流程图

中转server的更多相关文章

  1. 用Postfix + Dovecot 搭建的邮件server被垃圾邮件其中转server的处理

    今天发邮件. 发送失败.然后到server上看日志, 发现硬盘被垃圾邮件的缓存队列和日志塞满了. tail    -f    /var/log/maillog   发现疯狂刷屏.部分日志例如以下 : ...

  2. Qt搭建多线程Server

    起因是MySQL在Android上没有驱动.也就是说,移动端想要访问远程数据库,必须通过一台(或多台)PC进行中转. 中转PC作为Server,接受来自移动端Socket访问数据库的要求,Server ...

  3. 高性能 Socket 组件 HP-Socket v3.2.1-RC5 公布

    HP-Socket 是一套通用的高性能 TCP/UDP Socket 组件,包括服务端组件.client组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C+ ...

  4. 高性能 Socket 组件 HP-Socket v3.2.1-RC4 公布

    HP-Socket 是一套通用的高性能 TCP/UDP Socket 组件,包括服务端组件.client组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C+ ...

  5. 高性能 TCP & UDP 通信框架 HP-Socket v3.2.3 正式宣布

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包括服务端组件.client组件和 Agent 组件.广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#. ...

  6. 高性能 TCP & UDP 通信框架 HP-Socket v3.2.2 正式公布

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包括服务端组件.client组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#. ...

  7. 高性能 Socket 组件 HP-Socket v3.2.1-RC2 公布

    HP-Socket 是一套通用的高性能 TCP/UDP Socket 组件,包括服务端组件.client组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C+ ...

  8. 高性能 TCP & UDP 通信框架 HP-Socket v3.2.3 正式公布

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包括服务端组件.client组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#. ...

  9. 高性能 Socket 组件 HP-Socket v3.2.1 正式公布

    HP-Socket 是一套通用的高性能 TCP/UDP Socket 组件,包括服务端组件.client组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C+ ...

随机推荐

  1. 在不连接网线的情况下Windos与VM之间如何ping通

    一般情况下,如果宿主主机的网口连接网线并且能够上网,那么按照VM的默认安装,在VM-Settings-Hardware-Network Adapter-Network connection中选择Bri ...

  2. 自定义ActionBar背景(分别针对3.0以下和3.0以上的版本)

    官方原文:http://developer.android.com/training/basics/actionbar/styling.html 针对3.0以上的版本: <?xml versio ...

  3. linux 工具: Top

    linux TOP命令各参数详解[转载] http://www.cnblogs.com/sbaicl/articles/2752068.html

  4. 独立搭建zookeeper

    1.如果你装了带有zookeeper的Hbase版本,先把hbase-env.sh   export HBASE_MANAGES_ZK=false 设置为false 见下图 2.下载安装zookeep ...

  5. Ubuntu14.04 Y460闪屏问题解决方案

    我的笔记本是联想Y460,安装了Ubuntu之后发现屏幕闪烁移位,而且在使用IDE的时候出现无法输入中文等问题,其实是显卡驱动的问题,N卡官网给的驱动不好用,尝试使用大黄蜂 参考:https://wi ...

  6. iOS8 UITableView 分割条设置separator intent = 0 不起作用

    转自:http://blog.csdn.net/ljb_wh/article/details/40788333 ios7的时候在storyboard 设置 TableView的separator in ...

  7. centos php扩展开发流程

    原文:centos php扩展开发流程 一.安装php centos 默认 yum 安装 php 版本为 5.3, 很多php框架基本上要求5.4以上版本,这时候不能直接 用 yum install ...

  8. libvirt(virsh命令介绍)

    有了virt-install是安装虚拟机的命令,当然也需要一个管理虚拟机的命令了,那就是virsh. virsh命令使用 virsh <command> <domain-id> ...

  9. UVA 10020 Minimal coverage(贪心 + 区间覆盖问题)

     Minimal coverage  The Problem Given several segments of line (int the X axis) with coordinates [Li, ...

  10. CF(437C)The Child and Toy(馋)

    意甲冠军:给定一个无向图,每个小点右键.操作被拉动所有点逐一将去,直到一个点的其余部分,在连边和点拉远了点,在该点右点的其余的费用.寻找所需要的最低成本的运营完全成本. 解法:贪心的思想,每次将剩余点 ...