本文主要是介绍(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框架搭建(三):服务端命令交易基类等,时序图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!