QT 之 TCP/IP 服务器和客户端(二)(简单的字符串传递版本)
08-13 阅读数 989
对于QT中TCP/IP服务器和客户端总结如下:*服务器:QTcserver类中listen成员函数负责监听客户端; newConne... 博文 来自: zhaoyuaiweide的博客
赞
踩
可以通过Qt提供的IPC使用TCP/IP,使用QtNetwork模块即可实现,TCP/IP在实现应用程序和进程内部通信或与远程进程间的通信方面非常有用。
QtNetwork模块提供的类能够创建基于TCP/IP的客户端与服务端应用程序。为实现底层的网络访问,可以使用QTcpSocket、QTcpServer和QUdpSocket,并提供底层网络类。还提供了使用常规协议实现网络操作的QNetworkRequest、QNetworkReply、QNetworkAccessManager。
| 版权声明:一去、二三里,未经博主允许不得转载。
作为使用IPC的方法,TCP/IP可以使用多种类进行进程内部和外部的通信。
QtNetwork模块提供的类:
类 | 说明 |
---|---|
QLocalServer | 基于服务器的本地套接字的类 |
QLocalSocket | 支持本地套接字的类 |
QNetworkAccessManager | 处理从网络首发收据响应的类 |
QSocketNotifier | 监控从网络通知消息的类 |
QSsl | 在所有网络通信上用于SSL认证的类 |
QSslSocket | 支持通过客户端和服务器端加密的套接字的类 |
QTcpServer | 基于TCP的服务器端类 |
QTcpSocket | TCP套接字 |
QUdpSocket | UDP套接字 |
除表中所示,Qt提供的QtNetwork模块还支持多种协议。如果需要实现内部进程间的通信,建议使用QLocalSocket类。
下面我们来看一个示例,可以在Creator自带的示例中查找QLocalSocket或Local Fortune。
首先,启动Server,这是必然的,服务端不开启,客户端怎么连接得上呢?
server = new QLocalServer(this);
// 告诉服务器监听传入连接的名字。如果服务器当前正在监听,那么将返回false。监听成功返回true,否则为false
if (!server->listen("fortune")) {
QMessageBox::critical(this, tr("Fortune Server"),
tr("Unable to start the server: %1.")
.arg(server->errorString()));
close();
return;
}
fortunes << tr("You've been leading a dog's life. Stay off the furniture.")
<< tr("You've got to think about tomorrow.")
<< tr("You will be surprised by a loud noise.")
<< tr("You will feel hungry again in another hour.")
<< tr("You might have mail.")
<< tr("You cannot kill time without injuring eternity.")
<< tr("Computers are not intelligent. They only think they are.");
// 有新客户端进行连接时,发送数据
connect(server, SIGNAL(newConnection()), this, SLOT(sendFortune()));
// 发送数据
void Server::sendFortune()
{
// 从fortunes中随机取出一段字符串然后进行写入。
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_0);
out << (quint16)0;
out << fortunes.at(qrand() % fortunes.size());
out.device()->seek(0);
out << (quint16)(block.size() - sizeof(quint16));
// nextPendingConnection()可以返回下一个挂起的连接作为一个连接的QLocalSocket对象。
QLocalSocket *clientConnection = server->nextPendingConnection();
connect(clientConnection, SIGNAL(disconnected()),
clientConnection, SLOT(deleteLater()));
clientConnection->write(block);
clientConnection->flush();
clientConnection->disconnectFromServer();
}
socket被当做server的孩子创建,这意味着,当QLocalServer对象被销毁时它也会被自动删除。这明显是一个删除对象的好主意,使用完成以后,避免了内存的浪费。
启动客户端,连接到对应的服务器,如果连接不上,则进行错误处理。
socket = new QLocalSocket(this);
connect(getFortuneButton, SIGNAL(clicked()),
this, SLOT(requestNewFortune()));
connect(socket, SIGNAL(readyRead()), this, SLOT(readFortune()));
connect(socket, SIGNAL(error(QLocalSocket::LocalSocketError)),
this, SLOT(displayError(QLocalSocket::LocalSocketError)));
// 连接到服务器,abort()断开当前连接,重置socket。
void Client::requestNewFortune()
{
getFortuneButton->setEnabled(false);
blockSize = 0;
socket->abort();
socket->connectToServer(hostLineEdit->text());
}
// 读取服务器端发送的数据
void Client::readFortune()
{
// 读取接收到的数据
QDataStream in(socket);
in.setVersion(QDataStream::Qt_4_0);
if (blockSize == 0) {
if (socket->bytesAvailable() < (int)sizeof(quint16))
return;
in >> blockSize;
}
if (in.atEnd())
return;
QString nextFortune;
in >> nextFortune;
// 如果当前的数据和收到的数据相同,则重新请求一次,因为是随机的字符串,所以肯定不会每次都相同。
if (nextFortune == currentFortune) {
QTimer::singleShot(0, this, SLOT(requestNewFortune()));
return;
}
currentFortune = nextFortune;
statusLabel->setText(currentFortune);
getFortuneButton->setEnabled(true);
}
// 发生错误时,进行错误处理
void Client::displayError(QLocalSocket::LocalSocketError socketError)
{
switch (socketError) {
case QLocalSocket::ServerNotFoundError:
QMessageBox::information(this, tr("Fortune Client"),
tr("The host was not found. Please check the "
"host name and port settings."));
break;
case QLocalSocket::ConnectionRefusedError:
QMessageBox::information(this, tr("Fortune Client"),
tr("The connection was refused by the peer. "
"Make sure the fortune server is running, "
"and check that the host name and port "
"settings are correct."));
break;
case QLocalSocket::PeerClosedError:
break;
default:
QMessageBox::information(this, tr("Fortune Client"),
tr("The following error occurred: %1.")
.arg(socket->errorString()));
}
getFortuneButton->setEnabled(true);
}
<li class="tool-item tool-active is-like "><a href="javascript:;"><svg class="icon" aria-hidden="true"> <use xlink:href="#csdnc-thumbsup"></use> </svg><span class="name">点赞</span> <span class="count">5</span> </a></li> <li class="tool-item tool-active is-collection "><a href="javascript:;" data-report-click="{"mod":"popu_824"}"><svg class="icon" aria-hidden="true"> <use xlink:href="#icon-csdnc-Collection-G"></use> </svg><span class="name">收藏</span></a></li> <li class="tool-item tool-active is-share"><a href="javascript:;"><svg class="icon" aria-hidden="true"> <use xlink:href="#icon-csdnc-fenxiang"></use> </svg>分享</a></li> <!--打赏开始--> <!--打赏结束--> <li class="tool-item tool-more"> <a> <svg t="1575545411852" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5717" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M179.176 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5718"></path><path d="M509.684 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5719"></path><path d="M846.175 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5720"></path></svg> </a> <ul class="more-box"> <li class="item"><a class="article-report">文章举报</a></li> </ul> </li> </ul> </div> </div> <div class="person-messagebox"> <div class="left-message"><a href="https://blog.csdn.net/u011012932"> <img src="https://profile.csdnimg.cn/6/9/A/3_u011012932" class="avatar_pic" username="u011012932"> <img src="https://g.csdnimg.cn/static/user-reg-year/1x/7.png" class="user-years"> </a></div> <div class="middle-message"> <div class="title"><span class="tit"><a href="https://blog.csdn.net/u011012932" data-report-click="{"mod":"popu_379"}" target="_blank">一去丶二三里</a></span> <span class="flag expert"> <a href="https://blog.csdn.net/home/help.html#classicfication" target="_blank"> <svg class="icon" aria-hidden="true"> <use xlink:href="#csdnc-blogexpert"></use> </svg> 博客专家 </a> </span> </div> <div class="text"><span>发布了414 篇原创文章</span> · <span>获赞 3930</span> · <span>访问量 571万+</span></div> </div> <div class="right-message"> <a href="https://bbs.csdn.net/forums/p-u011012932" target="_blank" class="btn btn-sm btn-red-hollow bt-button personal-messageboard">他的留言板 </a> <a class="btn btn-sm attented bt-button personal-watch" data-report-click="{"mod":"popu_379"}">已关注</a> </div> </div> </div> </article>
<div class="hide-article-box hide-article-pos text-center">
<a class="btn-readmore" data-report-view="{"mod":"popu_376","dest":"https://blog.csdn.net/liang19890820/article/details/50633819","strategy":"readmore"}" data-report-click="{"mod":"popu_376","dest":"https://blog.csdn.net/liang19890820/article/details/50633819","strategy":"readmore"}">
展开阅读全文
<svg class="icon chevrondown" aria-hidden="true">
<use xlink:href="#csdnc-chevrondown"></use>
</svg>
</a>
</div>
<script>
$("#blog_detail_zk_collection").click(function(){
window.csdn.articleCollection()
})
08-13 阅读数 989
对于QT中TCP/IP服务器和客户端总结如下:*服务器:QTcserver类中listen成员函数负责监听客户端; newConne... 博文 来自: zhaoyuaiweide的博客
QT的CS架构还是基于TCP/IP的靠谱吧?
一般的通信可以使用json-rpc远程调用,但是传资源的时候还得靠基本的TCP链接
那么问题来了
我想传一条完整的信息,包括简单的标题,文字描述,还有图片和一小段视频资源
这样应该怎么处理呢?单独传的话都是没有问题的
但是不知道怎么把它们连在一起
最后感谢博主,才发现这个系列,造福人类啊,在群里公告可以宣传下举报回复查看回复(1)
</div>
02-04 阅读数 30
简述可以通过Qt提供的IPC使用TCP/IP,使用QtNetwork模块即可实现,TCP/IP在实现应用程序和进程内部通信或与远程进程间的通信方面非常有用。QtNetwork模块提供的类能够创建基于T... 博文 来自: weixin_34266504的博客
06-04 阅读数 1万+
一、TCP和UDP的区别这里我会用一个表格来显示这两者的区别比较项TCPUDP是否连接面向连接无连接传输是否可靠可靠不可靠流量控制提供不提供工作方式全双工可以是全双工应用场合大量数据少量数据速度慢快二... 博文 来自: 技术小白的博客
01-28 阅读数 154
简述QProcess可以在应用程序内部与其它进程通信,或启动其它应用程序。与在终端机之类的命令输入窗口上使用名称和参数是一样的,可以使用QProcess提供的函数start()启动进程。可以注册QSt... 博文 来自: weixin_33860528的博客
05-25 阅读数 1834
Qt环境:Qt4先上代码Client: mainwindow.h#ifndef MAINWINDOW_H#define MAINWINDOW_H#include &lt;QMainWindo... 博文 来自: daizhiyan1的博客
09-27 阅读数 276
项目需求:使用QT的TCP实现客户端与服务端的通信,界面如下写在开头:几个重要的方法与信号//监听方法,监听本机所有IP的9999端口tcpServer-&gt;listen(QHostAdd... 博文 来自: qq_20388417的博客
06-21 阅读数 2320
简述QIODevice做为QLocalSocket的父类,我们先做一下简单的介绍QIODevice类是Qt中所有输入/输出设备的基本接口类。QIODevice为支持读取和写入数据块的设备提供了一个通用... 博文 来自: yhc166188的博客
06-12 阅读数 659
概述QtRemoteObject简称QtRO,这是Qt5.9以后官方推出来的新模块,专门用于进程间通信(IPC)。在这之前,要实现进程间通信有多种方式,这里就不做介绍了,而Qt官方推出的这个新模块是基... 博文 来自: luoyayun361的专栏
01-27 阅读数 107
简述上一节中,我们分享下如何利用Windows消息机制来进行不同进程间的通信。但是有很多局限性,比如:不能跨平台,而且必须两个进程同时存在才可以,要么进程A发了消息谁接收呢?下面我们来分享另外一种跨平... 博文 来自: weixin_34393428的博客
01-26 阅读数 102
简述通过上一节的了解,我们可以看出进程通信的方式很多,今天分享下如何利用Windows消息机制来进行不同进程间的通信。简述效果发送消息自定义类型与接收窗体发送数据接收消息设置标题重写nativeEve... 博文 来自: weixin_33674976的博客
<div class="recommend-item-box blog-expert-recommend-box" style="display: block;">
<div class="d-flex">
<div class="blog-expert-recommend">
<div class="blog-expert">
<div class="blog-expert-flexbox" data-report-view="{"mod":"popu_709","dest":"https://blog.csdn.net/liang19890820/article/details/50633819"}"><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/liang19890820/article/details/50633819"}"><a href="https://blog.csdn.net/zhaoyuaiweide" target="_blank"><img src="https://profile.csdnimg.cn/0/4/A/3_zhaoyuaiweide" username="zhaoyuaiweide" alt="假如明天没有太阳" title="假如明天没有太阳"></a><span data-report-click="{"mod":"popu_710","dest":"https://blog.csdn.net/liang19890820/article/details/50633819"}"><span class="blog-expert-button-follow btn-red-follow" data-name="zhaoyuaiweide" data-nick="假如明天没有太阳">关注</span></span></div><div class="info"><span data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/liang19890820/article/details/50633819"}"><a href="https://blog.csdn.net/zhaoyuaiweide" target="_blank"><h5 class="oneline" title="假如明天没有太阳">假如明天没有太阳</h5></a></span> <p></p><p class="article-num" title="52篇文章"> 52篇文章</p><p class="article-num" title="排名:千里之外"> 排名:千里之外</p><p></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/liang19890820/article/details/50633819"}"><a href="https://blog.csdn.net/weixin_34266504" target="_blank"><img src="https://profile.csdnimg.cn/C/8/8/3_weixin_34266504" username="weixin_34266504" alt="weixin_34266504" title="weixin_34266504"></a><span data-report-click="{"mod":"popu_710","dest":"https://blog.csdn.net/liang19890820/article/details/50633819"}"><span class="blog-expert-button-follow btn-red-follow" data-name="weixin_34266504" data-nick="weixin_34266504">关注</span></span></div><div class="info"><span data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/liang19890820/article/details/50633819"}"><a href="https://blog.csdn.net/weixin_34266504" target="_blank"><h5 class="oneline" title="weixin_34266504">weixin_34266504</h5></a></span> <p></p><p class="article-num" title="4750篇文章"> 4750篇文章</p><p class="article-num" title="排名:千里之外"> 排名:千里之外</p><p></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/liang19890820/article/details/50633819"}"><a href="https://blog.csdn.net/y____xiang" target="_blank"><img src="https://profile.csdnimg.cn/0/F/B/3_y____xiang" username="y____xiang" alt="技术小白yhx" title="技术小白yhx"></a><span data-report-click="{"mod":"popu_710","dest":"https://blog.csdn.net/liang19890820/article/details/50633819"}"><span class="blog-expert-button-follow btn-red-follow" data-name="y____xiang" data-nick="技术小白yhx">关注</span></span></div><div class="info"><span data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/liang19890820/article/details/50633819"}"><a href="https://blog.csdn.net/y____xiang" target="_blank"><h5 class="oneline" title="技术小白yhx">技术小白yhx</h5></a></span> <p></p><p class="article-num" title="67篇文章"> 67篇文章</p><p class="article-num" title="排名:千里之外"> 排名:千里之外</p><p></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/liang19890820/article/details/50633819"}"><a href="https://blog.csdn.net/weixin_33860528" target="_blank"><img src="https://profile.csdnimg.cn/8/C/8/3_weixin_33860528" username="weixin_33860528" alt="weixin_33860528" title="weixin_33860528"></a><span data-report-click="{"mod":"popu_710","dest":"https://blog.csdn.net/liang19890820/article/details/50633819"}"><span class="blog-expert-button-follow btn-red-follow" data-name="weixin_33860528" data-nick="weixin_33860528">关注</span></span></div><div class="info"><span data-report-click="{"mod":"popu_709","dest":"https://blog.csdn.net/liang19890820/article/details/50633819"}"><a href="https://blog.csdn.net/weixin_33860528" target="_blank"><h5 class="oneline" title="weixin_33860528">weixin_33860528</h5></a></span> <p></p><p class="article-num" title="4477篇文章"> 4477篇文章</p><p class="article-num" title="排名:千里之外"> 排名:千里之外</p><p></p></div></div></div></div>
</div>
</div>
</div>
</div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{"mod":"popu_614","dest":"https://blog.csdn.net/lmhuanying1012/article/details/78517576","strategy":"searchFromBaidu1","index":"3"}" data-report-click="{"mod":"popu_614","dest":"https://blog.csdn.net/lmhuanying1012/article/details/78517576","strategy":"searchFromBaidu1","index":"3"}" data-track-view="{"mod":"popu_614","dest":"https://blog.csdn.net/lmhuanying1012/article/details/78517576","strategy":"searchFromBaidu1","index":2,"extend1":"_"}" data-track-click="{"mod":"popu_614","dest":"https://blog.csdn.net/lmhuanying1012/article/details/78517576","strategy":"searchFromBaidu1","index":2,"extend1":"_"}" data-flg="true"> <a href="https://blog.csdn.net/lmhuanying1012/article/details/78517576" target="_blank"> <h4 class="text-truncate oneline" style="width: 884px;"><em>Qt</em>之<em>进程</em><em>间通信</em>(<em>TCP</em>/<em>IP</em>) - 有志者事竟成</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">12-8</span> </p> </div> </a> </div><div class="recommend-item-box baiduSearch recommend-box-ident" data-report-view="{"mod":"popu_614","dest":"https://blog.csdn.net/mzy666888/article/details/50715059","strategy":"searchFromBaidu1","index":"4"}" data-report-click="{"mod":"popu_614","dest":"https://blog.csdn.net/mzy666888/article/details/50715059","strategy":"searchFromBaidu1","index":"4"}" data-track-view="{"mod":"popu_614","dest":"https://blog.csdn.net/mzy666888/article/details/50715059","strategy":"searchFromBaidu1","index":3,"extend1":"_"}" data-track-click="{"mod":"popu_614","dest":"https://blog.csdn.net/mzy666888/article/details/50715059","strategy":"searchFromBaidu1","index":3,"extend1":"_"}" data-flg="true"> <a href="https://blog.csdn.net/mzy666888/article/details/50715059" target="_blank"> <h4 class="text-truncate oneline" style="width: 876px;">【<em>Qt</em>】<em>Qt</em>之<em>进程</em><em>间通信</em>(Windows消息)【转】 - 技术分享,共同成长</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">12-16</span> </p> </div> </a> </div>
01-21 阅读数 102
简述通过前两节内容,我们实现了自定义窗体的移动,以及自定义标题栏-用来显示窗体的图标、标题,以及控制窗体最小化、最大化、关闭。在这之后,我们还缺少窗体的缩放-当鼠标移动到窗体的边框-左、上、右、下、左... 博文 来自: weixin_34082854的博客
05-22 阅读数 9755
在qt中的网络编程和之前在windows中的网络编程的基本步骤是一样的,服务器有两个套接字,一个负责监听(QTcpServer),还有一个负责通信(QTcpSocket),客户端只有一个负责通信的套接... 博文 来自: 技术小白的博客
10-24 阅读数 1万+
QT创建TCPSocket通信 最近在学习QT,了解到QT可以进行SOCKET网络通信,进行学习,并建立一个简单的聊天DEMO。为了测试是否能与VS2012下的程序进行通信,在VS2012下建立... 博文 来自: bailang_zhizun的博客
最近想用Qt设计两个进程互相通信,想到Qt有共享内存机制。用Qt的共享内存可以吗,有没有什么不可取的地方,想跨平台在Linux下也能成。分比较少,先谢啦 论坛
05-11 阅读数 1万+
一、简介DBus的出现,使得Linux进程间通信更加便捷,不仅可以和用户空间应用程序进行通信,而且还可以和内核的程序进行通信,DBus使得Linux变得更加智能,更加具有交互性。DBus分为两种类型:... 博文 来自: 乌托邦
请看源码: 1.发送方: void Sender::onSendMessage() { HWND hwnd = NULL; LPWSTR path = (LPWSTR)c_strTitle.utf16 论坛
12-14 阅读数 3953
Linux中进程之间通信有,pipe,signal,消息队列,共享内存,信号量,socket.Qt中提供的进程间通信有如下几种:1.TCP/IP跨平台的QNetwork提供了众多的类来实现网络编程.比... 博文 来自: Herok
08-16 阅读数 5464
程序运行截图如下:分享端分享图片:接受端接受图片: 分享端的逻辑:1.创建一个QSharedMemory,并设置一个key值;2.查看这个内存是不是被使用,如果被使用就断开;3.调用create进行创... 博文 来自: IT1995的博客
04-14 阅读数 1057
简述Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕和绘图设备上进行绘制,它主要基于QPainter、QPaintDevice和QPaintEngine这三个类。QPainter用于执行绘图... 博文 来自: weixin_34341229的博客
04-11 阅读数 4万+
这段时间用到了QT的TCP通信,做了初步的学习与尝试,编写了一个客户端和服务器基于窗口通信的小例程。使用QT的网络套接字需要.pro文件中加入一句:QT += network一、客户端1、... 博文 来自: 培培哥的专栏
09-14 阅读数 274
简述Qt Network 模块中提供了一些高级别的类,例如:QNetworkRequest、QNetworkReply 和 QNetworkAccessManager,使用常见的协议执行网络操作。在分... 博文 来自: weixin_33871366的博客
08-28 阅读数 1533
1. 发送消息:SendMessage(WinAPI)WINUSERAPILRESULT WINAPISendMessageA(__in HWND hWnd,__in UINT Msg,__in WP... 博文 来自: u013122905的博客
10-18 阅读数 3万+
软件环境: ubuntu----------------------------------------------------------------------------------------... 博文 来自: pk124729136的专栏
背景:我在windows上运行一个名为geth.ipc的进程,路径为:"\\.\pipe\geth.ipc",现在想通过QLocalSocket去连接这个进程 代码: socket = new QLo 论坛
最近在学习Qt,不知道Qt中是如何通过有名管道进行通信的,当然,也不知道QT是否已经封装好了相关的类,在网上查了很久都没有找到相关的资料(貌似有一个QCopChannel的类,但是也说得不是很清楚), 论坛
09-27 阅读数 463
继续上一篇的...写在前面:客户端中几个重要的信号与方法//连接服务器,port指的是服务器监听的端口tcpSocket-&gt;connectToHost(QHostAddress(ip),... 博文 来自: qq_20388417的博客
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-report-view="{"mod":"popu_614","dest":"https://download.csdn.net/download/zhaoyuaiweide/9931983","strategy":"BlogCommendFromBaidu","index":"28"}" data-report-click="{"mod":"popu_614","dest":"https://download.csdn.net/download/zhaoyuaiweide/9931983","strategy":"BlogCommendFromBaidu","index":"28"}">
<a href="https://download.csdn.net/download/zhaoyuaiweide/9931983" rel="noopener" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
<em>QT</em>之<em>TCP</em>/<em>IP</em> 客户端 </h4>
<span class="data float-right">08-13</span>
</div>
<div class="desc oneline">
QT之TCP/IP 客户端 可以与服务器接收并发送消息 </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
03-22 阅读数 7867
首先介绍一下TCP:(TransmissionControlProtocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。相比而言UDP,就是开放式、无连接、不可靠的传输层通信协... 博文 来自: 工作赚钱去旅行
12-12 阅读数 19万+
“我们来自Qt分享&amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;amp;交流,我们来自QML分享&amp;amp;amp;amp;... 博文 来自: 青春不老,奋斗不止!
09-29 阅读数 9964
>接口的作用,就是提供一个与其他系统交互的方法。其他系统无需(也无法)了解内部的具体细节,只能通过对外提供的接口来与进行通信。纯虚函数(槽也不例外)很容易理解,那么信号呢?>在Qt中,定义... 博文 来自: 青春不老,奋斗不止!
08-03 阅读数 1857
TCP即Transmission Control Protocol,传输控制协议。与UDP不同,它是面向连接和数据流的可靠传输协议。也就是说,它能使一台计算机上的数据无差错的发往网络上的其他计算机,所... 博文 来自: 把握自己。
现在遇到一个问题,就是我的Qt 程序用QProcess 启动了一个非QT程序(C 语言写的)作为子进程, 那么 Qt进程 和这个非Qt代码写的进程怎么通信啊?? 对了,这两个进程都是在本机上,是lin 论坛
08-11 阅读数 2265
应用场景:比如 QQ 与 QQ 音乐、QQ 影音等共享用户头像。使用QSharedMemory入门,看这篇基本就够了。https://www.devbean.net/2013/11/qt-study-... 博文 来自: 大家好,我是Utanbo
又到深夜了,我按照以往在csdn和公众号写着数据结构!这占用了我大量的时间!我的超越妹妹严重缺乏陪伴而 怨气满满!
而女朋友时常埋怨,认为数据结构这么抽象难懂的东西没啥作用,常会问道…
博文
11-28 阅读数 8万+
参考博客 [1]https://www.byteslounge.com/tutorials/java-ee-html5-websocket-example
这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案…
博文
敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自…
博文
最近区块链这个玩意又被市场搞的很是火热,相信大部分人都不太清楚这玩意到底是怎么样的一个概念,它来了,它来了,它到底是啥~ 国家都开始发文支持了,下面是一个通俗易懂的…
博文
比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是…
博文
根据我们的经验,程序员兼职主要分为三种:兼职职位众包、项目整包和自由职业者驻场。
所谓的兼职职位众…
博文
10-31 阅读数 4万+
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。
那…
博文
点赞再看,养成习惯
前言
Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难。作为一个…
博文
点赞再看,养成习惯
前言
Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难。作为一个…
博文
11-28 阅读数 1万+
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。
声明:本文不会下关于Mybatis和JPA两个持久层框架…
博文
ACM SIGCHI会议是人机交互领域最顶级的国际会议(CCF中国计算机学会认定的A类会议),受到了学术界与工业界的广泛关注与重视。
我们收集整理了CHI 2016年至…
博文
最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。
项目中文名:狗屁不通文章生成器
项目英文名:BullshitGenerator
根据作…
博文
11-15 阅读数 1万+
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善
前言
这一期不算《吊打…
博文
听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员……
996程序员做的梦:
第一场:团队招募
为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是…
博文
一、虚拟机
二、虚拟机组成
1.栈
栈帧
2.程序计数器
3.方法区
对象组成
4.本地方法栈
5.堆
GC
GC案例
一、虚拟机
同样的java代码在不…
博文
背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法
不过,当我看了源代码之后…
博文
数据库(Database,DB)是按照数据结构来组织,存储和管理数据的仓库。
典型特征:数据的结构化、数据间的共享、减少数据的冗余度,数据的独立性。
关系型数据库:使用关系模型把数据…
博文
家庭主要特点:穷。
不仅自己穷,亲戚也都很穷,可以说穷以类聚。爷爷做过铜匠,总的来说,标准的劳动阶级出身。
家有兄弟两人,
一个小龙,一个小虎。
小虎好动,与邻…
博文
裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢?
我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁…
博文
上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。
我接的私活不算多,挣到的…
博文
特别惭愧的是,虽然我很早就知道 GitHub,但是学会逛 GitHub 的时间特别晚。当时一方面是因为菜,看着这种全是英…
博文
<div class="recommend-item-box type_hot_word"> <div class="content clearfix" style="width: 962px;"> <div class="float-left"> <span> <a href="https://blog.csdn.net/yilovexing/article/details/80577510" target="_blank"> python</a> </span> <span> <a href="https://blog.csdn.net/slwbcsdn/article/details/53458352" target="_blank"> json</a> </span> <span> <a href="https://blog.csdn.net/csdnnews/article/details/83753246" target="_blank"> java</a> </span> <span> <a href="https://blog.csdn.net/qq_35077512/article/details/88952519" target="_blank"> mysql</a> </span> <span> <a href="https://blog.csdn.net/pdcfighting/article/details/80297499" target="_blank"> pycharm</a> </span> <span> <a href="https://blog.csdn.net/sinyu890807/article/details/97142065" target="_blank"> android</a> </span> <span> <a href="https://blog.csdn.net/gexiaoyizhimei/article/details/100122368" target="_blank"> linux</a> </span> <span> <a href="https://download.csdn.net/download/xhg_gszs/10978826" target="_blank"> json格式</a> </span> <span> <a href="https://www.csdn.net/gather_10/MtTaEg4sMy1kb3dubG9hZAO0O0OO0O0O.html" target="_blank"> 自己写个浏览器程序c#</a> </span> <span> <a href="https://www.csdn.net/gather_19/MtTaEg4sNC1kb3dubG9hZAO0O0OO0O0O.html" target="_blank"> c# 字符串变成整数数组</a> </span> <span> <a href="https://www.csdn.net/gather_15/MtTaEg4sNS1kb3dubG9hZAO0O0OO0O0O.html" target="_blank"> c#语言编程写出一个方法</a> </span> <span> <a href="https://www.csdn.net/gather_12/MtTaEg4sNi1kb3dubG9hZAO0O0OO0O0O.html" target="_blank"> c# 转盘抽奖</a> </span> <span> <a href="https://www.csdn.net/gather_14/MtTaEg4sNy1kb3dubG9hZAO0O0OO0O0O.html" target="_blank"> c#选中treeview</a> </span> <span> <a href="https://www.csdn.net/gather_1c/MtTaEg4sOC1kb3dubG9hZAO0O0OO0O0O.html" target="_blank"> c# ref</a> </span> <span> <a href="https://www.csdn.net/gather_18/MtTaEg4sOS1kb3dubG9hZAO0O0OO0O0O.html" target="_blank"> c#打印水仙花数</a> </span> <span> <a href="https://www.csdn.net/gather_11/MtTaEg5sMC1kb3dubG9hZAO0O0OO0O0O.html" target="_blank"> c# 清空数组</a> </span> <span> <a href="https://www.csdn.net/gather_1b/MtTaEg5sMS1kb3dubG9hZAO0O0OO0O0O.html" target="_blank"> c# 显示进程内存占用</a> </span> <span> <a href="https://www.csdn.net/gather_15/MtTaEg5sMi1kb3dubG9hZAO0O0OO0O0O.html" target="_blank"> c# 有静态代码块吗</a> </span> </div> </div> </div> <div class="recommend-loading-box"> <img src="https://csdnimg.cn/release/phoenix/images/feedLoading.gif"> </div> <div class="recommend-end-box"> <p class="text-center">没有更多推荐了,<a href="https://blog.csdn.net/" class="c-blue c-blue-hover c-blue-focus">返回首页</a></p> </div> </div> <div class="template-box"> <span>©️2019 CSDN</span><span class="point"></span> <span>皮肤主题: 代码科技</span> <span> 设计师: Amelia_0503 </span> </div> </main> <aside class="blog_container_aside"> <!--主页引入--> <div id="asideProfile" class="aside-box"> <!-- <h3 class="aside-title">个人资料</h3> --> <div class="profile-intro d-flex"> <div class="avatar-box d-flex justify-content-center flex-column"> <a href="https://blog.csdn.net/u011012932" data-report-click="{"mod":"popu_379","dest":"https://blog.csdn.net/u011012932"}"> <img src="https://profile.csdnimg.cn/6/9/A/3_u011012932" class="avatar_pic" username="u011012932"> <img src="https://g.csdnimg.cn/static/user-reg-year/1x/7.png" class="user-years"> </a> </div> <div class="user-info d-flex flex-column profile-intro-name-box"> <div> <span class="name csdn-tracking-statistics tracking-click " data-report-click="{"mod":"popu_379","dest":"https://blog.csdn.net/u011012932"}" username="u011012932"> <a href="https://blog.csdn.net/u011012932" class="" id="uid" title="一去丶二三里"> 一去丶二三里 </a> </span> </div> <div class="profile-intro-name-boxFooter"> <span class="flag expert"> <a href="https://blog.csdn.net/home/help.html#classicfication" target="_blank"> <svg class="icon" aria-hidden="true"> <use xlink:href="#csdnc-blogexpert"></use> </svg> 博客专家 </a> <span class="bubble hide hideAnimate bubble-expert"> 已认证的专家 </span> </span> <span class="personal-home-page" style="right:-96px;"><a target="_blank" href="https://me.csdn.net/u011012932">TA的个人主页 ></a></span> </div> </div> </div> <div class="data-info d-flex item-tiling"> <dl class="text-center" title="414"> <dt><a href="https://blog.csdn.net/liang19890820" data-report-query="t=1">原创</a></dt> <dd><a href="https://blog.csdn.net/liang19890820" data-report-query="t=1"><span class="count">414</span></a></dd> </dl> <dl class="text-center" id="fanBox" title="11821"> <dt>粉丝</dt> <dd><span class="count" id="fan">1万+</span></dd> </dl> <dl class="text-center" title="3930"> <dt>获赞</dt> <dd><span class="count">3930</span></dd> </dl> <dl class="text-center" title="3475"> <dt>评论</dt> <dd><span class="count">3475</span></dd> </dl> <dl class="text-center" title="5718668"> <dt>访问</dt> <dd><span class="count">571万+</span></dd> </dl> </div> <div class="grade-box clearfix"> <dl class="aside-box-footerClassify"> <dt>等级:</dt> <dd> <a href="https://blog.csdn.net/home/help.html#level" title="8级,点击查看等级说明" target="_blank"> <svg class="icon icon-level" aria-hidden="true"> <use xlink:href="#csdnc-bloglevel-8"></use> </svg> </a> </dd> </dl> <dl> <dt>周排名:</dt> <dd> <a class="grade-box-rankA" href="https://blog.csdn.net/rank/writing_rank" target="_blank"> 25 </a> </dd> </dl> <dl> <dt>积分:</dt> <dd title="45055"> 4万+ </dd> </dl> <dl title="101"> <dt>总排名:</dt> <dd> <a class="grade-box-rankA" href="https://blog.csdn.net/rank/writing_rank_total" target="_blank"> 101 </a> </dd> </dl> </div> <div class="aside-box-footer"> <div class="badge-box d-flex"> <div class="profile-medal">勋章:</div> <div class="badge d-flex"> <div class="icon-badge" title="GitHub"> <div class="mouse-box"> <img src="https://g.csdnimg.cn/static/user-medal/github.svg" alt=""> <div class="icon-arrow"></div> </div> <div class="grade-detail-box"> <div class="pos-box"> <div class="left-box d-flex justify-content-center align-items-center flex-column"> <img src="https://g.csdnimg.cn/static/user-medal/github.svg" alt=""> <p>GitHub</p> </div> <div class="right-box"> 绑定GitHub第三方账户获取 </div> </div> </div> </div> <div class="icon-badge" title="专栏达人"> <div class="mouse-box"> <img src="https://g.csdnimg.cn/static/user-medal/zhuanlandaren.png" alt=""> <div class="icon-arrow"></div> </div> <div class="grade-detail-box"> <div class="pos-box"> <div class="left-box d-flex justify-content-center align-items-center flex-column"> <img src="https://g.csdnimg.cn/static/user-medal/zhuanlandaren.png" alt=""> <p>专栏达人</p> </div> <div class="right-box"> 授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你! </div> </div> </div> </div> <div class="icon-badge" title="勤写标兵Lv1"> <div class="mouse-box"> <img src="https://g.csdnimg.cn/static/user-medal/qixiebiaobing-1.png" alt=""> <div class="icon-arrow"></div> </div> <div class="grade-detail-box"> <div class="pos-box"> <div class="left-box d-flex justify-content-center align-items-center flex-column"> <img src="https://g.csdnimg.cn/static/user-medal/qixiebiaobing-1.png" alt=""> <p>勤写标兵Lv1</p> </div> <div class="right-box"> 授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。 </div> </div> </div> </div> </div> <script> (function($) { setTimeout(function() { $('div.icon-badge.show-moment').removeClass('show-moment'); }, 5000); })(window.jQuery) </script> </div> </div> <div class="profile-intro-name-boxOpration"> <div class="opt-letter-watch-box"> <a class="attented personal-watch bt-button" id="btnAttent" data-report-click="{"mod":"popu_379"}">已关注</a> </div> <div class="opt-letter-watch-box"> <a class="bt-button btn-red-hollow personal-letter" href="https://im.csdn.net/im/main.html?userName=u011012932" target="_blank" rel="noopener">私信</a> </div> </div> </div>
<a data-report-click="{"mod":"popu_541","dest":"https://blog.csdn.net/u011012932/article/details/50277095"}" href="https://blog.csdn.net/u011012932/article/details/50277095"> 《Qt 实战一二三》 </a> <p class="read">阅读数 <span>197691</span></p> </li> <li> <a data-report-click="{"mod":"popu_541","dest":"https://blog.csdn.net/u011012932/article/details/53931813"}" href="https://blog.csdn.net/u011012932/article/details/53931813"> Qt5.7 + VS2015 环境搭建 </a> <p class="read">阅读数 <span>117598</span></p> </li> <li> <a data-report-click="{"mod":"popu_541","dest":"https://blog.csdn.net/u011012932/article/details/51154216"}" href="https://blog.csdn.net/u011012932/article/details/51154216"> Qt 之图形(QPainter 的基本绘图) </a> <p class="read">阅读数 <span>103051</span></p> </li> <li> <a data-report-click="{"mod":"popu_541","dest":"https://blog.csdn.net/u011012932/article/details/51752029"}" href="https://blog.csdn.net/u011012932/article/details/51752029"> Qt 资料大全 </a> <p class="read">阅读数 <span>86432</span></p> </li> <li> <a data-report-click="{"mod":"popu_541","dest":"https://blog.csdn.net/u011012932/article/details/49874033"}" href="https://blog.csdn.net/u011012932/article/details/49874033"> Qt 环境搭建(Visual Studio) </a> <p class="read">阅读数 <span>70577</span></p> </li> </ul> </div>
weixin_46059463:嘻嘻,有完整文件吗?
qq_37657751:收费了?!花40才能看您的文章啊?!
u011012932:是的,加我微信 wang_19890820。
MissYangIce:求分享 879492549@qq.com
Lover_PHP:m_pLoadingLabel是啥?
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。