首页 > 其他分享 >QT网络通信

QT网络通信

时间:2023-08-11 13:11:25浏览次数:38  
标签:网络通信 函数 通信 socket 接字 客户端 QT

QT进行TCP网络通信:

1.TCP是C/S模式的需要建立连接的网络通信架构,建立连接需要进行三次握手,断开连接需要四次握手。

2.服务器模式:需要先创建监听套接字,通过bind函数进行ip和端口绑定,通过listen函数监听客户端的连接请求,通过accept函数处理客户端的连接请求并返回通信套接字进行通信。

3.客户端模式:相较服务器简单,只需创建通信套接字,然后通过connect函数和服务器进行连接,然后即可进行通信。

4.在QT内通过QT的一些函数将TCP通信进行封装,首先,要用到通信,QT必须先引入network模块;

在服务器通过创建对象创建QTcpServer套接字,然后通过listen函数进行IP和端口绑定和监听客户端的连接请求(将TCP的bind和listen合在一起),客户端连接成功,信号newConnection会触发,通过对应的槽函数就可以进行通信。

在客户端通过QTcpSocket创建通信套接字对象,然后通过connectToHost和服务器进行连接,然后就可以通过read,write函数进行通信。

服务器:

MyServer=new QTcpServer(this);
MyServer->listen(QHostAddress::Any,port);
connect(MyServer,&QTcpServer::newConnection,this,&Server::MySocket);
void Server::MySocket(){
     socket=MyServer->nextPendingConnection();  //函数返回通信套接字
     //ui->label->setText("ip:"+socket->peerAddress().toString());
     //connect(socket,&QTcpSocket::readAll,this,&Server::MyRead);
}
客户端:
socket=new QTcpSocket(this);
socket->connectToHost(ip,port);

标签:网络通信,函数,通信,socket,接字,客户端,QT
From: https://www.cnblogs.com/yangbz2003-cn/p/17622732.html

相关文章

  • 《C++ GUI Qt4编程》第2章——创建对话框——深入介绍信号和槽
    槽和普通的C++成员函数几乎是一样的——可以是虚函数;可以被重载;可以是公有的、保护的或者私有的,并且也可以被其他C++成员函数直接调用,它们的参数可以是任意类型。唯一不同的是:槽还可以和信号连接在一起,在这种情况下,每当发射这个信号的时候,就会自动调用这个槽。connect(sender,SI......
  • QT鼠标图标显示与隐藏
    1.如果只希望在某个widget中不显示鼠标指针,那么在该widget的构造函数中调用QWidget::setCursor(QCursor(Qt::BlankCursor))2.如果希望整个应用程序不显示鼠标指针,那么在实例化Application后调用QApplication::setOverrideCursor(Qt::BlankCursor);3.可以在任一控件......
  • Qt CUDA混合编程BUG(一)
    在QT中进行CUDA编程,CUDA库与其他外部库冲突,debug失败问题描述在QT中进行CUDA编程,单独使用CUDA编程时并未出现难以解决的问题,但当我讲CUDA处理的部分,加入已搭建完毕一项较大的QT项目工程时,CUDA的lib库与项目使用到的其他外部lib库文件出现冲突,导致debug失败。可能出现多种错......
  • Qt 编写CUDA程序
    本文基于的情况是,Qt,CUDA和VS已经安装完成且能够正常运行的情况1.创建一个空的Qt项目2.创建一个.cu文件,本文创建的为kernel.cu内容如下1#include"cuda_runtime.h"2#include"device_launch_parameters.h"3#include<stdio.h>4cudaError_taddWithCuda(int*c,......
  • Qt 安装mqtt环境(这里默认以及有了Qt)
    首先QT的版本和mqtt包的版本要一致(我这里QT和mqtt的版本都是5.14.2)QT安装包(5.14.2)下载地址:Indexof/archive/qt/5.14mqtt包的一个连接(可以选择相应的版本)GitHub-qt/qtmqttat5.14.2将mqtt包解压后,mqtt.pro使用QTCREATOR打开,用release编译。编译中可能会出错:“QtMqt......
  • CLion中构建最简单的QT环境
    在安装好QT之后,在CLion中新建项目,可以看到QT相关的项目类型。注意这里的QtCMake前缀,这里需要填QT的CMake路径。但是这里不填也是可以的。在CMakeList中还有机会填。Create项目之后,会有一票报错,没有关系先不管。首先在Setting中构建ToolChain。我这里有一个VS的MSVC,有一个我自......
  • MQTT协议入门介绍
    目录MQTT概览MQTT特点MQTT协议的主要特性MQTT主要应用MQTT基于主题(Topic)消息路由MQTTV3.1.1协议报文MQTT消息QoSMQTT会话(CleanSession)MQTT连接保活心跳MQTT遗愿消息(LastWill)MQTT保留消息(RetainedMessage)MQTTWebSocket连接MQTT协议客户端库MQTT与XMPP协议对比MQTT在线......
  • Qt多语言切换时,QComboBox引起的一些问题
    板子Qt版本为5.9.5PC开发环境Qt版本为5.12.2界面有2个QComboBox,其中一个是用于切换语言,最开始使用的是voidcurrentIndexChanged(intindex)信号,多语言切换代码大致如下://绑定切换信号connect(ui->cbox_lang,QOverload<int>::of(&QComboBox::currentIndexChanged),this,&Fo......
  • esp32 mqtt 局域网 通信 测试通过
    #include<WiFi.h>#include<stdlib.h>#include"WiFiClientSecure.h"#include"Adafruit_MQTT.h"#include"Adafruit_MQTT_Client.h"#include<ArduinoJson.h>#defineWLAN_SSID"xxx"#defineWLAN_PA......
  • 递归遍历QTreeView+QStandrdItemModel
    //递归遍历点击查看代码voiditerateTreeViewNodes(constQModelIndex&parentIndex,QStandardItemModel*model,QVector<QStandardItem*>&items){ introwCount=model->rowCount(parentIndex); intcolumnCount=model->columnCount(parentIndex); ......