c++ qt获取电脑的内存_Qt官方示例-TCP客户端/服务器示例

87d2d276d033396fabc6d9cd5e91fb4b.png
该示例演示了在本地主机上的TCP客户端和服务器是如何通讯的。

0b9caf440db648309cb6a684139c80b6.gif

客户端

绑定信号槽。

connect(&tcpClient, &QAbstractSocket::connected, this, &Dialog::startTransfer); /* 连接到服务器时回送消息给服务器 */
connect(&tcpClient, &QIODevice::bytesWritten,this, &Dialog::updateClientProgress); /* 绑定写数据到服务器的信号槽 */

连接到服务器。

tcpClient.connectToHost(QHostAddress::LocalHost, tcpServer.serverPort());

这里比较有意思的是,客户端连接到服务器->客户端(tcpClient)触发startTransfer槽函数->调用tcpClient.write->触发QIODevice::bytesWritten信号->触发updateClientProgress槽函数调用->就一直tcpClient.write,直到if条件不成立后后停止发送。

void Dialog::startTransfer()
{// called when the TCP client connected to the loopback serverbytesToWrite = TotalBytes - int(tcpClient.write(QByteArray(PayloadSize, '@')));clientStatusLabel->setText(tr("Connected"));
}
void Dialog::updateClientProgress(qint64 numBytes)
{// called when the TCP client has written some bytesbytesWritten += int(numBytes);// only write more if not finished and when the Qt write buffer is below a certain size.if (bytesToWrite > 0 && tcpClient.bytesToWrite() <= 4 * PayloadSize) /* 直到if条件不成立后后停止发送 */bytesToWrite -= tcpClient.write(QByteArray(qMin(bytesToWrite, PayloadSize), '@'));clientProgressBar->setMaximum(TotalBytes);clientProgressBar->setValue(bytesWritten);clientStatusLabel->setText(tr("Sent %1MB").arg(bytesWritten / (1024 * 1024)));
}

服务端

绑定信号槽用于新连接:

connect(&tcpServer, &QTcpServer::newConnection,this, &Dialog::acceptConnection);

监听客户端连接。

!tcpServer.isListening() && !tcpServer.listen()

服务端新连接到来:

void Dialog::acceptConnection()
{tcpServerConnection = tcpServer.nextPendingConnection();if (!tcpServerConnection) {serverStatusLabel->setText(tr("Error: got invalid pending connection!"));return;}connect(tcpServerConnection, &QIODevice::readyRead,this, &Dialog::updateServerProgress); /* 接受客户端数据的槽函数 */connect(tcpServerConnection,QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error),this, &Dialog::displayError); /* 错误反馈 */connect(tcpServerConnection, &QTcpSocket::disconnected,tcpServerConnection, &QTcpSocket::deleteLater); /* 断开反馈 */serverStatusLabel->setText(tr("Accepted connection"));tcpServer.close(); 
}

接收来自客户端的数据:

void Dialog::updateServerProgress()
{bytesReceived += int(tcpServerConnection->bytesAvailable());tcpServerConnection->readAll(); /* 读数据 */serverProgressBar->setMaximum(TotalBytes);serverProgressBar->setValue(bytesReceived); /* 设置进度条 */serverStatusLabel->setText(tr("Received %1MB") /* 显示在界面上 */.arg(bytesReceived / (1024 * 1024)));if (bytesReceived == TotalBytes) {tcpServerConnection->close();startButton->setEnabled(true);
#ifndef QT_NO_CURSORQApplication::restoreOverrideCursor();
#endif}
}

关于更多

  • QtCreator软件可以找到:

be7b3a8ba2667f0eeaf40d52f47d2013.png
  • 或在以下Qt安装目录找到:
C:Qt{你的Qt版本}Examples{你的Qt版本}networkloopback
  • 相关链接
https://doc.qt.io/qt-5/qtnetwork-loopback-example.html
  • Qt君公众号回复『Qt示例』获取更多内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490107.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

下一个10年,解决问题靠“大脑”

前言&#xff1a;本文是网络智库举办的《崛起的超级智能&#xff1a;互联网大脑如何影响科技未来》新书分享会记录&#xff0c;作者刘锋主讲&#xff0c;深入阐述了科技时代谷歌大脑&#xff0c;百度大脑&#xff0c;阿里大脑&#xff0c;腾讯大脑&#xff0c;城市大脑&#xf…

JavaMail发送邮件

使用javax.mail可以发送普通文本文件&#xff0c;HTML格式的文件&#xff0c;同样可以发送图文并茂(包含附件)的java邮件。 发送邮件需要在验证发送的邮箱和密码&#xff1a;验证的帐号(本人使用163邮件)需要打开POP3/SMTP/IMAP 设置邮箱授权登录密码(已设置好): 新建java项目添…

cf两边黑屏怎么解决win10_关闭自动睡眠仍然睡眠?Win10过几分钟就会自动睡眠黑屏解决方法...

近期有Win10网友遇到一个奇怪的问题&#xff0c;已经设置了关闭了睡眠&#xff0c;也设置了从不关闭显示器&#xff0c;但是大概2分钟-3分钟不动鼠标或者对电脑无操作的时候&#xff0c;电脑就会出现自动睡眠黑屏的情况&#xff0c;网友根据网上的解决这个问题相关帖子进行操作…

Word如何固定页面内容在某一页开头

在写论文时经常需要新起一页从第一行写新的一章&#xff0c;那么如何固定这一页的内容是从这一页第一行开始写的呢&#xff1f; 例如需要将参考文献放在新的一页中开始写&#xff0c;那么在上一页的最后位置插入“分隔符”→“分页符”即可

西门子plm_好事连连 西门子PLM新品多项合作并举

几乎是同一时间&#xff0c;西门子PLM集中发布了多项重磅解决方案&#xff0c;并与IBM联合推出服务生命周期管理解决方案。西门子与IBM联合推出的服务生命周期管理解决方案&#xff0c;能够将实际维护和资产性能与设计决策和现场修改动态结合&#xff0c;从而优化资产的服务生命…

win10亮度怎么调_笔记本屏幕亮度怎么调

大家好&#xff0c;今天分享一篇来自装机吧官网(zhuangjiba.com)的图文教程。许多网民发现&#xff0c;当他们的计算机在办公室时&#xff0c;计算机屏幕的亮度会变暗&#xff0c;其中一些代表了计算机电量不足的问题&#xff0c;或者存在计算机没有设置亮度的问题。虽然计算机…

小程序下拉刷新_微信小程序下拉刷新

下拉刷新是常用操作&#xff0c;微信已经集成好了&#xff08;真机效果稍有瑕疵&#xff09;首先需要在.json文件启用下拉刷新{"enablePullDownRefresh": true, }然后在.js文件&#xff0c;监听下拉操作&#xff0c;处理loading和请求onPullDownRefresh() {wx.showNa…

牛津大学名誉教授Colin Blakemore:大脑是如何计算的?

智慧起航&#xff0c;共创未来【导读】9月21日&#xff0c;英国皇家学会会士、中国工程院外籍院士、香港城市大学教授、牛津大学名誉教授Colin Blakemore在第二届中国认知计算与混合智能学术大会&#xff08;CCHI2019&#xff09;作了报告——大脑是如何计算的? Colin教授的主…

表单和iframe的使用

图片热点&#xff1a; 规划出图片上的一个区域&#xff0c;可以做出超链接&#xff0c;直接点击图片区域就可以完成跳转的效果。示例&#xff1a; 网页划区&#xff1a; 在一个网页里&#xff0c;规划出一个区域用来展示另一个网页的内容。示例&#xff1a; 网页的拼接&#xf…

python计算熵

熵的计算公式&#xff1a; p(x)为概率&#xff0c;全部概率之和为1 假设 probs是网络输出的n分类预测概率&#xff0c;尺寸为[batch_size,n]&#xff0c;那么预测熵的计算代码如下&#xff1a; log_probs np.log2(probs) shang -1 * np.sum(probs * log_probs, axis1)

jq获取id的名称_查找 Linux 发行版名称、版本和内核详细信息 | Linux 中国

我这里给出了一些命令行方法来查找 Linux 系统信息。可能有很多&#xff0c;但这些方法适用于大多数 Linux 发行版。-- Sk本指南介绍了如何查找 Linux 发行版名称、版本和内核详细信息。如果你的 Linux 系统有 GUI 界面&#xff0c;那么你可以从系统设置中轻松找到这些信息。但…

报告 | 中国科学院发布地球大数据报告

地球大数据——具备海量、多源、异构、多时相、多维度、高耦合度、非平稳以及非结构化等特点&#xff0c;是深度认知地球和科学发现的新引擎&#xff0c;在促进可持续发展中可发挥重大作用。当地时间9月26日&#xff0c;在美国纽约联合国总部召开的第74届联合国大会上&#xff…

mugen4g补丁如何使用_CAD如何去除教育版戳记?

如何去除打印时出现的教育版字样&#xff1f;当我们收到甲方提供的建筑图纸时&#xff0c;尤其是设备安装类专业的CAD文件&#xff0c;很多都是教育版&#xff0c;也不知道是为啥。但是作为设计师&#xff0c;打印图纸时出现教育版戳记&#xff0c;那就显得太不专业了&#xff…

新书推荐:《追问人工智能:从剑桥到北京》

写此书的目的是为了探索&#xff1a;能计算的算计能算计的计算

Gartner公布五大新兴技术趋势 AI成主角

市场调研机构Gartner近日发布了2019年度《新兴技术的炒作周期(Hype Cycle)》研究报告&#xff0c;报告显示2019年有五大技术发展趋势十分突出&#xff0c;它们将对企业机构转型产生重要影响。这五大趋势分别是传感和移动、增强人类、后经典计算和通信、数字生态系统以及先进的人…

a12处理器和骁龙855_【性能】骁龙855最新跑分曝光 多核竟超苹果A12?

据之前消息&#xff0c;索尼将在2月24日开始的MWC 2019大展上推出新旗舰Xperia XZ4、Xperia XA3、XA3 Ultra三款新机&#xff0c;其中XZ4将采用21:9 FHD 分辨率的超窄“带鱼屏”&#xff0c;搭载骁龙855处理器&#xff0c;是主打旗舰&#xff0c;今日索尼Xperia XZ4最新跑分出炉…

word如何去掉标题前面的黑点

首先选中标题&#xff0c;点击 在弹出来的框框里取消“ 段中不分页 ”和“ 与下段同页 ” 此时黑点已经取消了

ICLR 2019八大趋势:RNN正在失去光芒,强化学习仍最受欢迎

大数据文摘出品来源&#xff1a;huyenchip编译&#xff1a;笪洁琼、周家乐ICLR 2019过去有几天了&#xff0c;作为今年上半年表现最为亮眼的人工智能顶会共收到1591篇论文&#xff0c;录取率为31.7%。为期4天的会议&#xff0c;共有8个邀请演讲主题&#xff0c;内容包括&#x…

python中赋值语句_python中赋值语句和增强赋值语句的区别

展开全部 赋值语句是2113由赋值表达式再加上分号构成的表5261达式语句。 其一般形式为&#xff1a;4102 变量表达式; 赋值语句的功能和特1653点都与赋值表达式相同。 它是程序中使用最多的语句之一。 在赋值语句的使用中需要注意以下几点&#xff1a; 1.由于在赋值符“”右边的…

word如何设置页眉横线的磅数

首先双击页眉&#xff0c;并选定横线 这样即为选中了横线 之后点击&#xff1a; 选择“边框与底纹” 之后按照下图设置即可