Qt实现TCP客户端和服务端
在 Qt 中实现 TCP 客户端和服务器可以使用 Qt 网络模块。以下是一个简单的示例,包括服务器和客户端的基本实现。
TCP 服务端实现
首先,我们来创建一个简单的 TCP 服务器。你需要一个包含以下内容的 C++ 源文件,比如 tcp_server.cpp:
cpp
#include <QTcpServer> #include <QTcpSocket> #include <QCoreApplication> #include <iostream>
class TcpServer : public QTcpServer {
Q_OBJECT public:
TcpServer(QObject *parent = nullptr) : QTcpServer(parent) {
connect(this, &QTcpServer::newConnection, this, &TcpServer::onNewConnection);
}
private slots:
void onNewConnection() {
QTcpSocket *socket = nextPendingConnection();
std::cout << "New client connected: " << socket->peerAddress().toString().toStdString() << std::endl;
connect(socket, &QTcpSocket::readyRead, [socket]() {
QByteArray data = socket->readAll();
std::cout << "Received: " << data.toStdString() << std::endl;
socket->write("Hello from server");
});
connect(socket, &QTcpSocket::disconnected, socket, &QTcpSocket::deleteLater);
}
};
int main(int argc, char *argv[]) {
QCoreApplication app(argc, argv);
TcpServer server;
if (!server.listen(QHostAddress::Any, 1234)) {
std::cerr << "Server could not start!" << std::endl;
return 1;
}
std::cout << "Server started on port 1234." << std::endl;
return app.exec();
}
#include "tcp_server.moc"
TCP 客户端实现
接下来,创建一个简单的 TCP 客户端,包含以下内容,比如 tcp_client.cpp:
cpp
#include <QTcpSocket> #include <QCoreApplication> #include <iostream>
class TcpClient : public QObject {
Q_OBJECT public:
TcpClient(const QString &host, quint16 port, QObject *parent = nullptr) : QObject(parent) {
socket = new QTcpSocket(this);
connect(socket, &QTcpSocket::connected, this, &TcpClient::onConnected);
connect(socket, &QTcpSocket::readyRead, this, &TcpClient::onReadyRead);
socket->connectToHost(host, port);
}
private slots:
void onConnected() {
std::cout << "Connected to server." << std::endl;
socket->write("Hello from client");
}
void onReadyRead() {
QByteArray data = socket->readAll();
std::cout << "Received from server: " << data.toStdString() << std::endl;
}
private:
QTcpSocket *socket;
};
int main(int argc, char *argv[]) {
QCoreApplication app(argc, argv);
TcpClient client("127.0.0.1", 1234);
return app.exec();
}
#include "tcp_client.moc"
编译和运行
确保你的项目文件(.pro 文件)中包含网络模块。在 .pro 文件中添加:
pro
QT += core network
CONFIG += c++11
然后可以使用 qmake 和 make 进行编译:
bash
qmake
make
先运行 tcp_server,然后运行 tcp_client。你应该能在客户端和服务器端看到发送和接收的消息。
总结
以上示例实现了一个基本的 TCP 服务器和客户端。服务器在端口 1234 上监听连接,一旦有客户端连接,将接收消息并响应。客户端连接服务器,发送消息,并打印接收到的回复。你可以根据实际需求扩展和修改这个基础实现。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2024-02-26 Windows下破解SecureCRT和SecureFx软件