60 lines
1.8 KiB
C++
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();
|
|
} |