Qt 中基于 TCP 的 Socket 编程可以通过 QTcpSocket 类来实现。以下是一个简单的例子演示如何使用 QTcpSocket 客户端连接到服务器,并向服务器发送数据:
#include <QTcpSocket>
void sendToServer()
{
// 创建 socket
QTcpSocket *socket = new QTcpSocket(this);
// 连接到服务器
socket->connectToHost("localhost", 1234);
if(socket->waitForConnected(3000)) {
// 发送数据
QByteArray data = "Hello Server!";
socket->write(data);
socket->waitForBytesWritten(3000);
// 关闭连接
socket->close();
}
}
以下是一个简单的例子演示如何编写一个服务器应用程序,以便接收客户端发来的消息:
#include <QTcpServer>
#include <QTcpSocket>
void startServer()
{
// 创建服务器
QTcpServer *server = new QTcpServer(this);
// 监听端口
server->listen(QHostAddress::Any, 1234);
// 当有新的连接时触发 connected() 信号
connect(server, &QTcpServer::newConnection, [&]() {
// 接受连接
QTcpSocket *socket = server->nextPendingConnection();
// 接收数据
connect(socket, &QTcpSocket::readyRead, [&]() {
QByteArray data = socket->readAll();
qDebug() << "Received:" << data;
// 回复客户端
QByteArray reply = "Hello Client!";
socket->write(reply);
});
});
}
以上是基本的 QTcpSocket 编程示例。需要注意的是, QTcpSocket 是在主线程中创建和使用的,如果需要在另一个线程中使用,请使用 QThread 或 QtConcurrent 等机制来实现。