qt TCP服务器向客户端发消息函数
时间: 2024-10-25 10:04:14 浏览: 37
在Qt中创建TCP服务器并向客户端发送消息,你可以使用QTcpServer和QTcpSocket类。下面是一个简单的示例展示了如何设置一个TCP服务器,接收连接并发送消息:
```cpp
#include <QtNetwork/QTcpServer>
#include <QtNetwork/QTcpSocket>
class TcpServer : public QTcpServer {
public:
TcpServer() : QTcpServer(this) {}
void incomingConnection(qintptr socketDescriptor) {
// 创建一个新的TCP套接字对象来处理新连接
QTcpSocket *client = new QTcpSocket(this);
client->setSocketDescriptor(socketDescriptor);
// 连接建立成功后,开始接受数据
connect(client, &QTcpSocket::readyRead, this, [this, client] {
QByteArray data = client->readAll();
QString message = "服务器收到消息:" + QString::fromUtf8(data);
// 发送回客户端的消息
QTextStream out(client);
out << "服务器回复: " << message;
// 如果你想持久化消息处理,可以将数据存入数据库或队列
processMessage(message);
// 关闭连接后删除套接字
client->close();
delete client;
});
// 处理连接错误
connect(client, &QTcpSocket::disconnected, this, &TcpServer::handleDisconnected);
}
private:
void handleDisconnected() {
qDebug("Client disconnected.");
}
// 自定义消息处理函数
virtual void processMessage(const QString &message) {
// ... (这里实现你的业务逻辑)
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
TcpServer server;
if (!server.listen(QHostAddress::Any, 9000)) {
qCritical("Failed to listen on port %d", 9000);
return -1;
}
qDebug("Server is running on port %d.", server.serverPort());
app.exec();
return 0;
}
```
在这个例子中,当有新的客户端连接时,`incomingConnection`函数会被调用。我们创建一个`QTcpSocket`实例,读取客户端的数据,并将其转换成字符串后发送回去。然后你可以在`processMessage`函数中处理接收到的具体消息。
阅读全文