(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

相关文章

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

Linux grep 命令的使用指南

《Linuxgrep命令的使用指南》本文给大家介绍Linuxgrep命令的使用指南,包括基础搜索语法、实践指南,感兴趣的朋友跟随小编一起看看吧... 目录linux grep 命令全面使用指南一、基础搜索语法1. 基本文本搜索2. 多文件搜索二、常用选项详解1. 输出控制选项2. 上下文控制选项三、正则表达

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

Java 与 LibreOffice 集成开发指南(环境搭建及代码示例)

《Java与LibreOffice集成开发指南(环境搭建及代码示例)》本文介绍Java与LibreOffice的集成方法,涵盖环境配置、API调用、文档转换、UNO桥接及REST接口等技术,提供... 目录1. 引言2. 环境搭建2.1 安装 LibreOffice2.2 配置 Java 开发环境2.3 配