GrabBag/VrNets/tcpServer/Test/test_tcp_server.cpp

60 lines
1.8 KiB
C++

#include "../Inc/VrTcpServer.h"
#include <QCoreApplication>
#include <QTimer>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
VrTcpServer server;
// 连接信号槽
QObject::connect(&server, &IVrTcpServer::serverStarted, []() {
qDebug() << "Server started!";
});
QObject::connect(&server, &IVrTcpServer::serverStopped, []() {
qDebug() << "Server stopped!";
});
QObject::connect(&server, &IVrTcpServer::serverError, [](const QString &error) {
qDebug() << "Server error:" << error;
});
QObject::connect(&server, &IVrTcpServer::clientConnected, [&server](const QString &clientId) {
qDebug() << "Client connected:" << clientId;
// 发送欢迎消息给新连接的客户端
QByteArray welcomeMessage = "Welcome to the server!";
server.sendDataToClient(clientId, welcomeMessage);
});
QObject::connect(&server, &IVrTcpServer::clientDisconnected, [](const QString &clientId) {
qDebug() << "Client disconnected:" << clientId;
});
QObject::connect(&server, &IVrTcpServer::dataReceived, [&server](const QString &clientId, const QByteArray &data) {
qDebug() << "Received data from" << clientId << ":" << data.toHex();
// 将收到的数据广播给所有客户端
QByteArray message = "Broadcast from " + clientId.toUtf8() + ": " + data;
server.broadcastData(message);
});
// 启动服务器
if (!server.startServer(12345)) {
qDebug() << "Failed to start server";
return -1;
}
qDebug() << "Server listening on port 12345";
// 10秒后停止服务器并退出
QTimer::singleShot(10000, [&server, &app]() {
server.stopServer();
app.quit();
});
return app.exec();
}