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

四川住房与城乡建设厅网站网站开发技术方案实验报告

四川住房与城乡建设厅网站,网站开发技术方案实验报告,室内设计师网名,跨境电商亚马逊一、TCP 通信原理简介 TCP(Transmission Control Protocol)是一种面向连接的可靠通信协议,主要特性如下: [!NOTE] 三次握手建立连接 可靠传输:顺序、无丢包 面向流:数据无结构边界 适用场景&#xff1a…

一、TCP 通信原理简介

TCP(Transmission Control Protocol)是一种面向连接的可靠通信协议,主要特性如下:

[!NOTE]

  • 三次握手建立连接

  • 可靠传输:顺序、无丢包

  • 面向流:数据无结构边界

  • 适用场景:聊天、网页、文件传输


二、Qt 网络模块及常用类

类名功能说明
QTcpServer监听端口,接受客户端连接
QTcpSocket用于客户端和服务端的数据收发
QHostAddress表示 IP 地址(支持 IPv4/IPv6)

使用前需在 .pro 文件中添加:

QT += network

三、TCP 服务端代码

📄 MyTcpServer.h

#ifndef MYTCPSERVER_H
#define MYTCPSERVER_H#include <QTcpServer>   // TCP服务端类
#include <QTcpSocket>   // TCP套接字类// 自定义类继承自 QTcpServer
class MyTcpServer : public QTcpServer
{Q_OBJECT  // Qt 元对象宏,必须有才能使用信号槽public:explicit MyTcpServer(QObject *parent = nullptr);  // 构造函数void startServer(quint16 port);  // 启动服务器private slots:void onNewConnection();       // 有新连接时处理void onClientReadyRead();     // 客户端发来数据时处理void onClientDisconnected();  // 客户端断开时处理private:QTcpSocket *clientSocket;  // 当前连接的客户端 socket(简化版)
};#endif // MYTCPSERVER_H

📄 MyTcpServer.cpp

#include "MyTcpServer.h"
#include <QDebug>  // 用于调试输出// 构造函数:初始化 clientSocket
MyTcpServer::MyTcpServer(QObject *parent): QTcpServer(parent), clientSocket(nullptr) {}// 启动服务器监听指定端口
void MyTcpServer::startServer(quint16 port)
{if (listen(QHostAddress::Any, port)) {// QHostAddress::Any 表示监听所有本机地址qDebug() << "✅ Server started on port" << port;// 当有客户端连接时,发出 newConnection() 信号connect(this, &QTcpServer::newConnection,this, &MyTcpServer::onNewConnection);} else {qDebug() << "❌ Server failed to start!";}
}// 有客户端连接时调用
void MyTcpServer::onNewConnection()
{// 获取客户端 socket(自动生成)clientSocket = nextPendingConnection();qDebug() << "🔌 Client connected from"<< clientSocket->peerAddress().toString();// 接收数据信号绑定槽函数connect(clientSocket, &QTcpSocket::readyRead,this, &MyTcpServer::onClientReadyRead);// 客户端断开信号绑定槽函数connect(clientSocket, &QTcpSocket::disconnected,this, &MyTcpServer::onClientDisconnected);
}// 客户端有数据时读取
void MyTcpServer::onClientReadyRead()
{QByteArray data = clientSocket->readAll();  // 读取所有数据qDebug() << "📨 Received:" << data;clientSocket->write("✅ Server received: " + data);  // 回传消息
}// 客户端断开连接处理
void MyTcpServer::onClientDisconnected()
{qDebug() << "⚠️ Client disconnected.";clientSocket->deleteLater();  // 延迟释放 socket 对象
}

四、TCP 客户端代码(逐行注释)

📄 MyTcpClient.h

#ifndef MYTCPCLIENT_H
#define MYTCPCLIENT_H#include <QObject>
#include <QTcpSocket>  // TCP 客户端通信类class MyTcpClient : public QObject
{Q_OBJECTpublic:explicit MyTcpClient(QObject *parent = nullptr);  // 构造函数void connectToServer(const QString &host, quint16 port);  // 连接服务器void sendMessage(const QString &message);  // 发送消息private slots:void onConnected();      // 连接成功void onReadyRead();      // 收到服务器数据void onDisconnected();   // 连接断开private:QTcpSocket *socket;      // 客户端 socket 对象
};#endif // MYTCPCLIENT_H

📄 MyTcpClient.cpp

#include "MyTcpClient.h"
#include <QDebug>MyTcpClient::MyTcpClient(QObject *parent): QObject(parent)
{socket = new QTcpSocket(this);  // 创建 socket,父对象托管内存// 信号槽绑定connect(socket, &QTcpSocket::connected,this, &MyTcpClient::onConnected);connect(socket, &QTcpSocket::readyRead,this, &MyTcpClient::onReadyRead);connect(socket, &QTcpSocket::disconnected,this, &MyTcpClient::onDisconnected);
}// 发起连接
void MyTcpClient::connectToServer(const QString &host, quint16 port)
{qDebug() << "🌐 Connecting to server:" << host << ":" << port;socket->connectToHost(host, port);  // 异步连接(不会阻塞 UI)
}// 发送消息
void MyTcpClient::sendMessage(const QString &message)
{if (socket->state() == QAbstractSocket::ConnectedState) {socket->write(message.toUtf8());  // QString 转 QByteArrayqDebug() << "➡️ Sent to server:" << message;} else {qDebug() << "⚠️ Not connected.";}
}// 连接成功
void MyTcpClient::onConnected()
{qDebug() << "✅ Connected to server.";
}// 收到服务器消息
void MyTcpClient::onReadyRead()
{QByteArray data = socket->readAll();  // 读取服务器发送内容qDebug() << "📩 Server response:" << QString(data);
}// 断开连接
void MyTcpClient::onDisconnected()
{qDebug() << "❌ Disconnected from server.";
}

五、main.cpp 示例调用(测试)

MyTcpServer *server = new MyTcpServer();
server->startServer(12345);  // 启动服务端MyTcpClient *client = new MyTcpClient();
client->connectToServer("127.0.0.1", 12345);  // 连接服务端
client->sendMessage("Hello from Client!");   // 发送消息

六、总结

  • Qt 中的 TCP 通信机制与基本原理
  • QTcpServer 如何监听 + 接收连接 + 获取 QTcpSocket
  • QTcpSocket 如何连接服务器 + 发送接收数据
  • C++ 构造函数、QObject 父子机制、信号槽绑定细节

文章转载自:

http://raM21xNv.rmdwp.cn
http://d9TzaJ6Z.rmdwp.cn
http://sNKT292p.rmdwp.cn
http://75cLHMri.rmdwp.cn
http://84MszuXd.rmdwp.cn
http://dwXEMcrf.rmdwp.cn
http://tSQu257M.rmdwp.cn
http://CCQcfrBf.rmdwp.cn
http://NSKUbAeh.rmdwp.cn
http://rDCg18yB.rmdwp.cn
http://FEQSnkVB.rmdwp.cn
http://wef1PXHO.rmdwp.cn
http://3QHT7mEG.rmdwp.cn
http://oiYOPZAr.rmdwp.cn
http://4ib5rxBK.rmdwp.cn
http://SlB34kzd.rmdwp.cn
http://csNwB5u1.rmdwp.cn
http://IwM6noVU.rmdwp.cn
http://zHwrvG9W.rmdwp.cn
http://HYwCWmYx.rmdwp.cn
http://18BH9kMB.rmdwp.cn
http://uJJCUTdN.rmdwp.cn
http://t6yy7Ffh.rmdwp.cn
http://VTSHTYFh.rmdwp.cn
http://uttVztwp.rmdwp.cn
http://dmhtn9DV.rmdwp.cn
http://vXwwMK2l.rmdwp.cn
http://HlhmvPNv.rmdwp.cn
http://T6yrJ3lS.rmdwp.cn
http://yuCF7pHf.rmdwp.cn
http://www.dtcms.com/wzjs/745414.html

相关文章:

  • 网站建设公司软文wordpress get attachment
  • 甜品制作网站雕塑网站源码
  • 网站 使用的字体百度推广建站平台
  • 专业的徐州网站开发yw55523can优物入口
  • 怎样做学校网站seo是什么意思教程
  • app与网站的区别是什么凡科网代理商登录
  • python做的网站有哪些关于做美食的小视频网站
  • 建设网站虚拟现实技术相城seo网站优化软件
  • 漯河企业网站建设新类型的网站
  • 先买域名不建设网站吗专业集团网站建设
  • 免费视频网站app使用排名浙江壹设软装设计有限公司
  • 中国十大文旅策划公司南通网站排名优化
  • 滨州淄博网站建设网站地图好处
  • 长春移动端网站设计网页设计与制作建立站点实践报告
  • 河南企业网站备案easyui做门户网站
  • 北京网站怎么建设做公司网站哪家 上海
  • 无锡建站方案在哪些网站做推广比较好
  • 滁州网站建设联系方式c 网站建设大作业代码
  • 做纺织机械的网站域名预付网站建设服务费如何入账
  • ui的含义网站建设wordpress前台显示作者角色
  • 做服装设计有什么网站可以参考苏州建设职业培训中心官网
  • 企业网站新模式东莞企业网站设计公司
  • 必要 网站专业建设网站的公司
  • 上海 企业网站制网站title标签内容怎么设置
  • 免费的个人网站注册给客户做网站图片侵权
  • 汇编做网站iis wordpress 500
  • 美业网站建设网络广告代理
  • 高端医疗网站模板免费下载wordpress正文美化
  • 学校网站英文企业电子商务网站建设的最终目的
  • 南通中小企业网站制作个人小公司怎么注册