(P129)abcbank长连接版

2024-06-08 05:38
文章标签 连接 p129 abcbank

本文主要是介绍(P129)abcbank长连接版,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1.短连接vs长连接

1.短连接vs长连接

  • 服务端本来就可以处理短连接,则不需要修改
    原因:P129\ABCBank\BankServer\Server.cpp
    P129\ABCBank\BankServer\BankThread.cpp
    P129\ABCBank\BankServer\BankSession.cpp

  • 短连接操作演示
    客户端执行查询操作后,客户端就断开连接了
    在这里插入图片描述

  • 将短连接修改成长连接需要注意的地方是:
    短连接:每次请求都要连接服务器端,即:one connection per request;
    长连接:每个客户端只连接一次服务器端,即:one connection per client;
    在这里插入图片描述

  • eg:P 129只是修改了客户端的登录和查询操作,其余的没改,要改自己改下就行
    P129\ABCBank\BankClient\UI\LoginForm.cpp
    P129\ABCBank\BankClient\UI\BalanceInquiryForm.cpp
    P129\ABCBank\BankClient\main.cpp
    P129\ABCBank\BankClient\Client.cpp

  • 以客户端的登录和查询操作为eg,将短连接改成长连接
    P128\ABCBank\BankClient\UI\LoginForm.cpp短连接

	//客户端BankSession是短连接的原因:BankSession bs;是局部变量,出了该作用域,//BankSession的析构函数都会被调用,BankSession的智能指针socket_会被释放掉,它所管理的对象Socket也会被释放掉//所以连接会断开try{BankSession bs;bs.SetCmd(CMD_LOGIN);bs.SetAttribute("name", editUser_->GetText());bs.SetAttribute("pass", editPass_->GetText());Singleton<TransactionManager>::Instance().DoAction(bs);

P129\ABCBank\BankClient\UI\LoginForm.cpp长连接

try{//改成长连接BankSession* bs = Singleton<Client>::Instance().GetBankSession();//登录操作完成后,bs是存在的,不会释放掉,因为单例的Client端未被释放掉//因为所有请求和应答数据都公用一个BankSession,所以每次做事情之前最好Clear下//比如查询明细,可能有应答,应答数据实际保存在response_.clear();,此时又做了一次查询,这次的查询没查到任何内容,但是//response_.clear()没有clear()掉,会将以前的内容给显示出来,所以每次请求之前都Clear()一下bs->Clear();bs->SetCmd(CMD_LOGIN);bs->SetAttribute("name", editUser_->GetText());bs->SetAttribute("pass", editPass_->GetText());
  • 测试:余额查询完毕后也不会断开连接,即一个客户端与服务器端只保持一个长连接
    在这里插入图片描述
    先启动客户端,再启动服务端的优化
    在这里插入图片描述
    若不优化,则先启动客户端,再启动服务端会出现下面的错误
    在这里插入图片描述

这篇关于(P129)abcbank长连接版的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

Java 连接Sql sever 2008

Java 连接Sql sever 2008 /Sql sever 2008 R2 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class TestJDBC

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

nginx长连接的问题

转自: http://www.360doc.com/content/12/1108/17/1073512_246644318.shtml

NGINX轻松管理10万长连接 --- 基于2GB内存的CentOS 6.5 x86-64

转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=190176&id=4234854 一 前言 当管理大量连接时,特别是只有少量活跃连接,NGINX有比较好的CPU和RAM利用率,如今是多终端保持在线的时代,更能让NGINX发挥这个优点。本文做一个简单测试,NGINX在一个普通PC虚拟机上维护100k的HTTP

TL-Tomcat中长连接的底层源码原理实现

长连接:浏览器告诉tomcat不要将请求关掉。  如果不是长连接,tomcat响应后会告诉浏览器把这个连接关掉。    tomcat中有一个缓冲区  如果发送大批量数据后 又不处理  那么会堆积缓冲区 后面的请求会越来越慢。

DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed

DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed 文章目录 DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed问题解决办法 问题 使用 DBeaver 连接 MySQL 数据库的时候, 一直报错下面的错误 Public Key Retrieval is

Github连接方式

打开Linux中git的配置文件: /home/username/git/MyRepository/.git/config [core]repositoryformatversion = 0filemode = truebare = falselogallrefupdates = true[remote "origin"]fetch = +refs/heads/*:refs/remot

ora-01017 ora-02063 database link,oracle11.2g通过dblink连接oracle11.2g

错误图示: 问题解决 All database links, whether public or private, need username/password of the remote/target database. Public db links are accessible by all accounts on the local database, while private