/** * @file main.cpp * @brief Mock XPL2 server — echoes back on three ports. */ #include #include #include static QTcpServer * listenOn (quint16 port, const char *name, QObject *parent) { auto *server = new QTcpServer (parent); QObject::connect ( server, &QTcpServer::newConnection, server, [=] () { while (auto *sock = server->nextPendingConnection ()) { qInfo ("[%s:%d] client connected", name, port); QObject::connect (sock, &QTcpSocket::readyRead, sock, [=] () { QByteArray data = sock->readAll (); qInfo ("[%s:%d] echo %lld bytes", name, port, data.size ()); sock->write (data); }); QObject::connect (sock, &QTcpSocket::disconnected, sock, [=] () { qInfo ("[%s:%d] client disconnected", name, port); sock->deleteLater (); }); } }); if (!server->listen (QHostAddress::Any, port)) { qCritical ("Failed to listen on %s port %d: %s", name, port, qPrintable (server->errorString ())); } else { qInfo ("Listening on %s port %d", name, port); } return server; } int main (int argc, char *argv[]) { QCoreApplication app (argc, argv); listenOn (9110, "Command", &app); listenOn (9111, "Imaging", &app); listenOn (9112, "Status", &app); return app.exec (); }