#include "listenserver.h" #include "client.h" #include #define MAX_CLIENTS 50 /** * Initialize listenServer to listen on specific port. * And connect Signal newConnection() with Slot newClientConnection(). * @param port */ ListenServer::ListenServer(quint16 port) { if (!_server.listen(QHostAddress::Any, port) || !_server.isListening()) qFatal("Cannot bind to TCP port %d (incoming SSL clients)", (int)port); connect(&_server, SIGNAL(newConnection()), this, SLOT(newClientConnection())); } ListenServer::~ListenServer() { _server.close(); for (int i = 0; i < _clients.size(); ++i) _clients[i]->deleteLater(); } /* * Slots */ /** * Handle new client connection. * If there are not already to much clients, emit signal newClient(). */ void ListenServer::newClientConnection() { QSslSocket* sock; while ((sock = (QSslSocket*)_server.nextPendingConnection()) != NULL) { if (_clients.size() >= MAX_CLIENTS) { sock->abort(); sock->deleteLater(); continue; } Client* client = new Client(sock); _clients.append(client); // create new client class and add to list emit newClient(client); } }