(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

相关文章

捷瑞数字业绩波动性明显:关联交易不低,募资必要性遭质疑

《港湾商业观察》施子夫 5月22日,山东捷瑞数字科技股份有限公司(以下简称,捷瑞数字)及保荐机构国新证券披露第三轮问询的回复,继续推进北交所上市进程。 从2023年6月递表开始,监管层已下发三轮审核问询函,关注到捷瑞数字存在同业竞争、关联交易、募资合理性、期后业绩波动等焦点问题。公司的上市之路多少被阴影笼罩。​ 业绩波动遭问询 捷瑞数字成立于2000年,公司是一家以数字孪生驱动的工

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

22.手绘Spring DI运行时序图

1.依赖注入发生的时间 当Spring loC容器完成了 Bean定义资源的定位、载入和解析注册以后,loC容器中已经管理类Bean 定义的相关数据,但是此时loC容器还没有对所管理的Bean进行依赖注入,依赖注入在以下两种情况 发生: 、用户第一次调用getBean()方法时,loC容器触发依赖注入。 、当用户在配置文件中将<bean>元素配置了 lazy-init二false属性,即让

21.手绘Spring IOC运行时序图

1.再谈IOC与 DI IOC(lnversion of Control)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创 建、依赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让 容器知道需要创建的对象与对象的关系。这个描述最具体表现就是我们所看到的配置文件。 DI(Dependency Injection)依赖注入:就是指对象是被动接受依赖类

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测 目录 时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测基本介绍程序设计参考资料 基本介绍 MATLAB实现LSTM时间序列未来多步预测-递归预测。LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为

Linux 下的Vim命令宝贝

vim 命令详解(转自:https://www.cnblogs.com/usergaojie/p/4583796.html) vi: Visual Interface 可视化接口 vim: VI iMproved VI增强版 全屏编辑器,模式化编辑器 vim模式: 编辑模式(命令模式)输入模式末行模式 模式转换: 编辑-->输入: i: 在当前光标所在字符的前面,转为输入模式

【网络安全的神秘世界】搭建dvwa靶场

🌝博客主页:泥菩萨 💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 下载DVWA https://github.com/digininja/DVWA/blob/master/README.zh.md 安装DVWA 安装phpstudy https://editor.csdn.net/md/?articleId=1399043

Linux中拷贝 cp命令中拷贝所有的写法详解

This text from: http://www.jb51.net/article/101641.htm 一、预备  cp就是拷贝,最简单的使用方式就是: cp oldfile newfile 但这样只能拷贝文件,不能拷贝目录,所以通常用: cp -r old/ new/ 那就会把old目录整个拷贝到new目录下。注意,不是把old目录里面的文件拷贝到new目录,

cocospod 搭建环境和使用

iOS 最新版 CocoaPods 的安装流程 1.移除现有Ruby默认源 $gem sources --remove https://rubygems.org/ 2.使用新的源 $gem sources -a https://ruby.taobao.org/ 3.验证新源是否替换成功 $gem sources -l 4.安装CocoaPods (1)  $sudo gem

(1995-2022年) 全国各省份-技术交易活跃度

技术交易活跃度是一个关键指标,用于衡量技术市场的交易频繁程度和活跃性。它不仅显示了市场参与者对技术交易的参与热情,而且交易的频率也体现了市场的活力。这一指标对于不同的利益相关者具有不同的意义: 对投资者而言,技术交易活跃度是把握市场趋势、评估交易策略和预测市场波动的重要工具。对企业来说,技术交易活跃度反映了其技术创新的活跃程度和市场竞争的激烈程度,有助于企业制定技术创新和市场竞争策略。对政策制定