中转服务器

36 篇文章 0 订阅
30 篇文章 0 订阅

中转传输概要设计

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

1. 概述

中转服务器采用事件驱动的方式,与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. 用户事件处理

时序图如下:


登录、心跳和退出流程

转发文件流程图


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值