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

成都建设网站专业公司中小型网站建设信息

成都建设网站专业公司,中小型网站建设信息,室内设计网站有哪些比较好,怎么做自己的优惠券网站文章目录 TCP 通信 TCP 通信 QT主要通过QTcpSocket 和 QTcpServer两个类实现服务器和客户端的TCP 通信。 QTcpSocket 是 Qt 提供的套接字类,看用于建立、管理和操作 TCP 连接。 常用方法 方法说明connectToHost(host, port)连接到指定服务器disconnectFromHost(…

文章目录

  • TCP 通信

TCP 通信

QT主要通过QTcpSocketQTcpServer两个类实现服务器和客户端的TCP 通信。

QTcpSocket 是 Qt 提供的套接字类,看用于建立、管理和操作 TCP 连接。

常用方法

方法说明
connectToHost(host, port)连接到指定服务器
disconnectFromHost()断开连接
write(QByteArray)发送数据
readAll()读取所有可用数据
waitForConnected(int timeout)等待连接成功
waitForReadyRead(int timeout)等待数据可读

常用信号

信号触发时机
connected()连接成功
disconnected()连接断开
readyRead()有新数据可读
errorOccurred(QAbstractSocket::SocketError)发生错误

QTcpServer 是 Qt 提供的 TCP 服务器类,它主要用于监听和接受客户端连接。

常用方法

方法说明
listen(QHostAddress, quint16 port)监听指定 IP 和端口
close()关闭服务器
hasPendingConnections()是否有新的连接请求
nextPendingConnection()获取新的连接对象

常用信号

信号触发时机
newConnection()有新的客户端连接

注意:要使用这两个类需要在项目文件中添加:

QT += network

下面给出一个简单示例:
https://github.com/BinaryAI-1024/QtStudy/tree/master/network/TCP

服务器监听端口 12345,等待客户端连接。 客户端连接服务器并发送 "Hello from client!\n"。 服务器收到消息后打印,并向客户端发送 "Hello from server!\n"。 客户端收到服务器消息后打印。

服务器代码

// tcpserver.h
#ifndef TCPSERVER_H
#define TCPSERVER_H#include <QTcpServer>
#include <QTcpSocket>
#include <QObject>class TcpServer : public QObject {Q_OBJECT
public:explicit TcpServer(QObject *parent = nullptr); ~TcpServer();void startServer(quint16 port); // 启动服务器并监听指定端口private slots:void onNewConnection(); // 处理新的客户端连接void onReadyRead(); // 处理客户端发送的数据private:QTcpServer *server; // 监听 TCP 连接的服务器对象QTcpSocket *clientSocket; // 当前连接的客户端套接字
};#endif // TCPSERVER_H
// tcpserver.cpp
#include "tcpserver.h"
#include <QDebug>// 构造函数,初始化 QTcpServer 并连接 newConnection 信号
TcpServer::TcpServer(QObject *parent) : QObject(parent), server(new QTcpServer(this)) {//  // 每次有新连接可用时都会发出 newConnection() 信号connect(server, &QTcpServer::newConnection, this, &TcpServer::onNewConnection);
}// 析构函数,关闭服务器
TcpServer::~TcpServer() {server->close();
}// 启动服务器,监听指定端口
void TcpServer::startServer(quint16 port) {if (server->listen(QHostAddress::Any, port)) {qDebug() << "Server started on port" << port;} else {qDebug() << "Server failed to start!";}
}// 处理新客户端连接
void TcpServer::onNewConnection() {clientSocket = server->nextPendingConnection(); // 获取新连接的客户端套接字// 连接客户端的 readyRead 信号(有数据可读时触发)connect(clientSocket, &QTcpSocket::readyRead, this, &TcpServer::onReadyRead);// 连接客户端的 disconnected 信号(客户端断开连接时触发)connect(clientSocket, &QTcpSocket::disconnected, clientSocket, &QTcpSocket::deleteLater);qDebug() << "New client connected!";clientSocket->write("Hello from server!\n"); // 发送欢迎消息给客户端
}// 处理客户端发送的数据
void TcpServer::onReadyRead() {QByteArray data = clientSocket->readAll(); // 读取客户端数据qDebug() << "Received from client:" << data;
}

客户端代码

// tcpclient.h
#ifndef TCPCLIENT_H
#define TCPCLIENT_H#include <QTcpSocket>
#include <QObject>class TcpClient : public QObject {Q_OBJECT
public:explicit TcpClient(QObject *parent = nullptr);~TcpClient();void connectToServer(const QString &host, quint16 port); // 连接到指定服务器private slots:void onConnected(); // 处理成功连接到服务器的事件void onReadyRead(); // 处理从服务器接收的数据private:QTcpSocket *socket; // 客户端 TCP 套接字对象
};#endif // TCPCLIENT_H
// tcpclient.cpp
#include "tcpclient.h"
#include <QDebug>// TcpClient 构造函数,初始化 QTcpSocket 并连接信号槽
TcpClient::TcpClient(QObject *parent) : QObject(parent), socket(new QTcpSocket(this)) {connect(socket, &QTcpSocket::connected, this, &TcpClient::onConnected); // 连接成功信号connect(socket, &QTcpSocket::readyRead, this, &TcpClient::onReadyRead); // 读取数据信号
}// TcpClient 析构函数,关闭套接字
TcpClient::~TcpClient() {socket->close();
}// 连接到服务器的指定主机和端口
void TcpClient::connectToServer(const QString &host, quint16 port) {socket->connectToHost(host, port);
}// 处理成功连接到服务器的事件
void TcpClient::onConnected() {qDebug() << "Connected to server!";socket->write("Hello from client!\n"); // 发送消息给服务器
}// 处理从服务器接收的数据
void TcpClient::onReadyRead() {QByteArray data = socket->readAll();qDebug() << "Received from server:" << data;
}

主函数

// main.cpp
#include <QCoreApplication>
#include "tcpserver.h"
#include "tcpclient.h"int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);// 启动服务器TcpServer server;server.startServer(12345);// 启动客户端,连接到服务器TcpClient client;client.connectToServer("127.0.0.1", 12345);return a.exec();
}

结果:

Server started on port 12345
New client connected!
Connected to server!
Received from server: "Hello from server!\n"
Received from client: "Hello from client!\n"
http://www.dtcms.com/a/502560.html

相关文章:

  • 网站域名后缀代表什么意思越秀金融大厦
  • 福建建设执业资格注册管理中心网站上海做外贸网站的公司
  • 本地南京网站建设重庆免费网站推广软件
  • 网站建设单元格边距北京网站建设推
  • 网站建设厘金手指排名二一建材 东莞网站建设
  • 福田网站建设龙岗网站建设网站建设管理工作情况汇报
  • 网站设计要求 优帮云推广平台网站热狗网
  • 网站ico如何添加番禺广州网站建设
  • 搭建网站 软件长沙网站建设软件
  • 微擎 网站开发工具wordpress修改文章浏览次数
  • 秦皇岛网站制作人才招聘公司网络营销
  • 丈哥seo博客工具杭州seo招聘
  • 做网站和做app那个简单工作室网站需要备案吗
  • 网站平台建设投资费用清单女装网站模板
  • 路由器带u盘接口的做网站软件制作流程
  • 网站名是什么dw超链接自己做的网站
  • 怎么样给一个网站做自然排名网站开发交易
  • 天津网站开发建设公司做网站不用tomcat行吗
  • 纯免费建站做情侣网站
  • 织梦网站版本济南百度推广开户
  • 网站建设交流平台网站开发的需求分析书
  • 国外企业网站怎么做临漳网站建设
  • 网站建设网站定制一级a做爰片免播放器网站
  • 菜鸟是什么网站商城网站建站系统
  • 装饰公司网站php源码网站建设费进项税金可以抵扣吗
  • 东莞网站关键排名北京网页设计师培训多少钱
  • 北京网站名称注册证书社保在哪个网站做增员
  • 建设中专网站深圳网站程序开发
  • 拼多多网站开发wordpress index.php on line 17
  • 中卫市建设局网站网站建设个网站一般需要花多少钱