(P106)abcbank框架搭建(三):服务端命令交易基类等,时序图

2024-06-08 05:48

本文主要是介绍(P106)abcbank框架搭建(三):服务端命令交易基类等,时序图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1.服务端命令交易基类等
    • 2.时序图

1.服务端命令交易基类等

  • 类如下:
BankSession(与服务器端通信且收集界面输入的数据)
Transaction(银行交易基类)
下面都是它的派生类
BalanceInquiry
ChangePassword
CloseAccount
Deposit
OpenAccount
QueryAccountHistoryBill
QueryDayBill
QueryHistoryBill
Transfer
UserLogin
Withdrawal
TransactionManager(交易管理类)

2.时序图

  • 创建一个BankSession对象,若是登录的话,就SetCmd()设置cmdlogin命令,SetAttribute然后收集输入的数据(不同的界面,SetAttribute收集到的数据是不一样的),保存在BankSession对象,若是登录,会收集用户名和密码;
    TransactionManager设置了命令,从命令找到对应的命令对象,调用命令对象的Execute函数;
    会话结束后,将BankSession销毁掉。
    在这里插入图片描述

  • eg:P106\ABCBank\BankClient\BankSession.cpp
    P106\ABCBank-0.2.3\ABCBank\BankClient\UI\LoginForm.cpp
    P106\ABCBank-0.2.3\ABCBank\BankClient\CMD\UserLogin.cpp

请求包的包头和包体
在这里插入图片描述
注意:client端的/ABCBank\BankClient\CMD\UserLogin.cpp中的/session.Send(jos.Data(), jos.Length());不对的原因是。
我们希望发送的是包体name+pass,即(3)的位置。
但是jos.Reposition(lengthPos);将指针移动到(1)的位置,session.Send(jos.Data(), jos.Length());这样只能求得(2)的位置,即打包了4个字节,不对。

所以服务端的ABCBank\BankServer\CMD\UserLogin.cpp也要改为session.Send(jos.Data(), length);
在这里插入图片描述

  • eg:
    P106\ABCBank\BankServer\BankSession.cpp
    P106\ABCBank\BankServer\CMD\UserLogin.cpp
    P106\ABCBank\BankClient\BankSession.cpp
    P106\ABCBank\BankClient\UI\LoginForm.cpp
    P106\ABCBank\BankClient\CMD\UserLogin.cpp

  • 测试:客户端登录成功后,即断开连接
    在这里插入图片描述
    登录成功后,客户端断开连接。因为ABCBank\BankClient\UI\LoginForm.cpp中的BankSession bs;是栈上对象,try完毕后,就退出来了。然后BankSession中的socket也就跟着销毁了。所以客户端断开了。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

这篇关于(P106)abcbank框架搭建(三):服务端命令交易基类等,时序图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1041351

相关文章

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

Python极速搭建局域网文件共享服务器完整指南

《Python极速搭建局域网文件共享服务器完整指南》在办公室或家庭局域网中快速共享文件时,许多人会选择第三方工具或云存储服务,但这些方案往往存在隐私泄露风险或需要复杂配置,下面我们就来看看如何使用Py... 目录一、android基础版:HTTP文件共享的魔法命令1. 一行代码启动HTTP服务器2. 关键参

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

C语言进阶(预处理命令详解)

《C语言进阶(预处理命令详解)》文章讲解了宏定义规范、头文件包含方式及条件编译应用,强调带参宏需加括号避免计算错误,头文件应声明函数原型以便主函数调用,条件编译通过宏定义控制代码编译,适用于测试与模块... 目录1.宏定义1.1不带参宏1.2带参宏2.头文件的包含2.1头文件中的内容2.2工程结构3.条件编

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.