中转server

中转传输概要设计

中转传输的消息架构为模拟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. 用户事件处理

时序图例如以下:

登录、心跳和退出流程

转发文件流程图

时间: 2024-11-08 14:33:38

中转server的相关文章

Qt搭建多线程Server

起因是MySQL在Android上没有驱动.也就是说,移动端想要访问远程数据库,必须通过一台(或多台)PC进行中转. 中转PC作为Server,接受来自移动端Socket访问数据库的要求,Server访问数据库,取得数据,通过Socket发送给移动端. Qt写个C/S其实很简单,网上各种教程,硬伤:Server!是!单!线!程! 假设有10000个移动端访问中转Server,那么如果Server是单线程,那么这10000个移动端是排队通信,排队访问数据库,肯定完蛋! 所以Server必须使用多线

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

HP-Socket 是一套通用的高性能 TCP/UDP Socket 组件,包括服务端组件.client组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Delphi.E(易语言).Java.Python 等编程语言接口.HP-Socket 对通信层实现全然封装,上层应用不必关注通信层的不论什么细节:HP-Socket 提供基于事件通知模型的 API 接口,能很easy高效地整合到新旧应用程序中.为了让使用者能方便高速地学习和使用 HP-S

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

HP-Socket 是一套通用的高性能 TCP/UDP Socket 组件,包括服务端组件.client组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Delphi.E.Java 等编程语言开发接口.HP-Socket 对通信层实现全然封装,上层应用不必关注通信层的不论什么细节:HP-Socket 提供基于事件通知模型的 API 接口,能很easy高效地整合到新旧应用程序中.为了让使用者能方便高速地学习和使用 HP-Socket,迅速掌握

基于消息系统架构设计

近期在弄一个业务系统,这个业务系统原本是有一个架构的,可是在后期扩展时发现问题多多.关键扩展非常不方便,并且由于业务系统安全规格较高.数据网络连接须要通过多个闸口传递才可,并且业务系统可能须要多地系统联合组网.共享业务数据,可是各地系统又必须相互独立. 用户希望改动架构,让系统可扩展性添加,同一时候要满足系统相互独立方便升级和兴许开发. 依照用户的要求我考虑使用一个基于消息传递的架构设计来满足需求. 所谓基于消息,就是通过消息中转server,中转全部系统间连接数据,同一时候管理数据路由,由消息

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

HP-Socket 是一套通用的高性能 TCP/UDP 通信框架.包括服务端组件.client组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Delphi.E(易语言).Java.Python 等编程语言接口.HP-Socket 对通信层实现全然封装.应用程序不必关注通信层的不论什么细节:HP-Socket 提供基于事件通知模型的 API 接口,能很easy高效地整合到新旧应用程序中. 为了让使用者能方便高速地学习和使用 HP-Socke

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

HP-Socket 是一套通用的高性能 TCP/UDP Socket 组件,包括服务端组件.client组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Delphi.E.Java 等编程语言开发接口.HP-Socket 对通信层实现全然封装,上层应用不必关注通信层的不论什么细节:HP-Socket 提供基于事件通知模型的 API 接口,能很easy高效地整合到新旧应用程序中.为了让使用者能方便高速地学习和使用 HP-Socket,迅速掌握

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

HP-Socket 是一套通用的高性能 TCP/UDP Socket 组件,包括服务端组件.client组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Delphi.E.Java 等编程语言开发接口.HP-Socket 对通信层实现全然封装,上层应用不必关注通信层的不论什么细节:HP-Socket 提供基于事件通知模型的 API 接口,能很easy高效地整合到新旧应用程序中.为了让使用者能方便高速地学习和使用 HP-Socket,迅速掌握

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

HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包括服务端组件.client组件和 Agent 组件.广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Delphi.E(易语言).Java.Python 等编程语言接口. HP-Socket 对通信层实现全然封装,应用程序不必关注通信层的不论什么细节:HP-Socket 提供基于事件通知模型的 API 接口,能很easy高效地整合到新旧应用程序中. 为了让使用者能方便高速地学习和使用 HP-Sock

调侃物联网开源框架,我们什么时候也来开源一个?

前段时间高通公司开源了眼下 较火的开源框架AllJoyn框架 个人对这个框架并不看好, 地址: http://blog.csdn.net/ncscan/article/details/17267327 为了证明我的理论呢.拿出了一个非常久之前的项目! 地址:http://blog.csdn.net/ncscan/article/details/18793117 实践视频:[flash]http://player.youku.com/player.php/sid/XNjY2MzUxMjQ0/v.s