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,一经查实,立即删除!

相关文章

Android 为应用添加默认加载页

默认的情况下&#xff0c;程序启动时&#xff0c;会有一个黑屏的时期&#xff0c;原因是&#xff0c;首个activity会加载一些数据&#xff0c;比如初始化列表数据等。具体步骤如下&#xff1a; 1./res/values/styles.xml 在 Theme 中&#xff0c;添加一个 android:windowBackgr…

下一个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;从而优化资产的服务生命…

收集正则

清除掉每个文件内容包含console.log(*********)为 : /console\s*.(log|debug|info|warn|error|assert|dir|dirxml|trace|group|groupEnd|time|timeEnd|profile|profileEnd|count)\s*\(.*?\)$/g转载于:https://www.cnblogs.com/wengpengfeijava/p/5784926.html

np.sum报错TypeError: sum() got an unexpected keyword argument ‘axis‘

这是因为直接对torch.tensor进行np.sum操作造成的&#xff0c;只要首先将需要求和的数据转换为numpy array即可 tensor tensor.numpy()

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;那么你可以从系统设置中轻松找到这些信息。但…

matlab设置图片背景透明_Matlab中得到透明背景图片的方法

MATLAB输出的矢量图往往不是透明背景的&#xff0c;这样插在其他文件中就会很难看。关于在MATLAB中如何得到透明背景的矢量图&#xff0c;我有个经验就是&#xff1a;用MATLAB导出pdf图形(而不是eps图形)&#xff0c;然后用Acrobat另存成eps图形&#xff0c;往往就是透明的了。…

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

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

IE中window的模态框与返回值

window.returnValue是javascript中html的window对象的属性,目的是返回窗口值,当用window.showModalDialog函数打开一个IE的模态窗口时,用于返回窗口的值: 在父页面中使用window.showModalDialog可以弹出一个模态框 var result window.showModalDialog("child.htm",n…

numpy降序排序

np.sort是升序排序 为了降序排序&#xff0c;可以先升序排序然后在反转数组 shang_sort np.sort(shang) shang_sort shang_sort[::-1] 同理&#xff0c;numpy.argsort() 函数返回的是数组值从小到大的索引值。 为了得到降序排序的索引值&#xff0c;可以通过先用numpy.ar…

快手用户群体分析_快手发布《2020快手用户及营销报告》

11月30日&#xff0c;在快手2020磁力大会现场&#xff0c;清华大学新闻与传播学院沈阳教授团队与快手磁力引擎联合发布《2020快手用户及营销报告》&#xff0c;以快手内容、社交、商业三个维度为切口&#xff0c;创造性地提出“星云生态”概念。沈阳教授在现场生动地解读了此份…

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

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