(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

相关文章

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

Redis的Zset类型及相关命令详细讲解

《Redis的Zset类型及相关命令详细讲解》:本文主要介绍Redis的Zset类型及相关命令的相关资料,有序集合Zset是一种Redis数据结构,它类似于集合Set,但每个元素都有一个关联的分数... 目录Zset简介ZADDZCARDZCOUNTZRANGEZREVRANGEZRANGEBYSCOREZ

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

关于Maven生命周期相关命令演示

《关于Maven生命周期相关命令演示》Maven的生命周期分为Clean、Default和Site三个主要阶段,每个阶段包含多个关键步骤,如清理、编译、测试、打包等,通过执行相应的Maven命令,可以... 目录1. Maven 生命周期概述1.1 Clean Lifecycle1.2 Default Li

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

Mycat搭建分库分表方式

《Mycat搭建分库分表方式》文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效... 目录分库分表解决的问题分库分表架构添加数据验证结果 总结分库分表解决的问题单表数据量过大带来的性能

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服