当前位置: 首页 > news >正文

QT TCP通信介绍

QT是一个跨平台的C++应用程序开发框架,它提供了一套完整的工具和库,用于开发各种类型的应用程序,包括图形用户界面(GUI)应用程序、命令行工具、网络应用程序等。QT提供了丰富的功能和类来简化网络通信的开发,其中包括TCP通信。

TCP通信是一种可靠的、面向连接的通信协议,它在网络中广泛应用于数据传输。与UDP相比,TCP提供了更高的可靠性,但通信时延较大。TCP通信的优点包括数据可靠性、数据顺序保证等,缺点包括通信时延较大、通信开销较大等。

以下是两台电脑通过TCP通信的简单示例代码:

Server端代码:

#include <QTcpServer>
#include <QTcpSocket>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);QTcpServer server;if (!server.listen(QHostAddress::Any, 1234)) {qDebug() << "Server could not start!";return 1;}qDebug() << "Server started. Waiting for incoming connections...";while (server.isListening()) {QTcpSocket *clientSocket = server.nextPendingConnection();qDebug() << "Client connected.";QObject::connect(clientSocket, &QTcpSocket::readyRead, [&]() {QByteArray data = clientSocket->readAll();qDebug() << "Received data from client:" << data;});QObject::connect(clientSocket, &QTcpSocket::disconnected, [&]() {qDebug() << "Client disconnected.";});}return a.exec();
}

Client端代码:

#include <QTcpSocket>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);QTcpSocket clientSocket;clientSocket.connectToHost("server_ip_address", 1234);if (!clientSocket.waitForConnected()) {qDebug() << "Failed to connect to server.";return 1;}qDebug() << "Connected to server.";// Send data to serverclientSocket.write("Hello from client!");// Wait for response from serverif (clientSocket.waitForReadyRead()) {QByteArray responseData = clientSocket.readAll();qDebug() << "Received response from server:" << responseData;}// Disconnect from serverclientSocket.disconnectFromHost();return a.exec();
}

在这个示例中,Server端监听1234端口,等待Client的连接。一旦Client连接上,Server接收来自Client的数据并输出。Client连接到Server的IP地址和端口号,发送数据到Server,并等待来自Server的响应。完成通信后,Client断开连接。

http://www.lryc.cn/news/320622.html

相关文章:

  • 保姆级教学!微信小程序设计全攻略!
  • 日期差值的计算
  • 为什么需要Occupancy?
  • SSA优化最近邻分类预测(matlab代码)
  • nginx相关内容的安装
  • 基于SpringBoot和Echarts的全国地震可视化分析实战
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的农作物害虫检测系统(深度学习模型+UI界面+训练数据集)
  • 21 # 高级类型:条件类型
  • Java之List.steam().sorted(Comparator.comparing())排序异常解决方案
  • js判断对象是否有某个属性
  • CleanMyMac X2024永久免费的强大的Mac清理工具
  • 等保测评的知识
  • 【算法】多路归并(鱼塘钓鱼)
  • unity3d Animal Controller的Animal组件中General基础部分理解
  • css背景从上到下颜色渐变、css背景从左到右颜色渐变、 css框线展示外阴影、css框线展示内阴影
  • Nacos学习笔记
  • 微信小程序 nodejs+vue+uninapp学生在线选课作业管理系统
  • trpc-go 博客系统
  • 【JAVA】Servlet开发
  • k8s helm 删除 tiller
  • Python入门(小白友好)
  • 【数据结构与算法】:非递归实现快速排序、归并排序
  • 2024-3-18-C++day6作业
  • 【OceanBase诊断调优】—— 敏捷诊断工具obdiag一键分析OB集群日志设计与实践
  • python 调用redis创建查询key
  • 归并排序思路
  • 【蓝桥杯选拔赛真题65】python输出三个字符 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析
  • K8S日志收集方案-EFK部署
  • js基础语法大全(时间戳,uuid,字符串转json)
  • uView LoadingIcon 加载动画