zoukankan      html  css  js  c++  java
  • 中转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. 用户事件处理

    时序图例如以下:


    登录、心跳和退出流程

    转发文件流程图


  • 相关阅读:
    如何用C++操作无线网卡开启共享热点WiFi?
    delphi中的copy函数和pos函数
    C#使用WinAPI 修改电源设置,临时禁止笔记本合上盖子时睡眠(使用PowerGetActiveScheme等函数,以及C#对WINAPI的调用)
    发布Qt Widgets桌面应用程序的方法(自定义进程步骤,用QT Creator直接生成)
    认识TDD
    基于Bootstrap的Asp.net Mvc 分页
    Chrome控制台 JS调试
    英语学习
    JavaScript中的作用域和声明提前
    LeetCode: Distinct Subsequences
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4269356.html
Copyright © 2011-2022 走看看