From 1a5709501f94014d41987b956338bb6424b9f90c Mon Sep 17 00:00:00 2001 From: sr Date: Mon, 4 Feb 2013 19:50:31 +0100 Subject: Initial commit --- src/server/net/listenserver.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/server/net/listenserver.cpp (limited to 'src/server/net/listenserver.cpp') diff --git a/src/server/net/listenserver.cpp b/src/server/net/listenserver.cpp new file mode 100644 index 0000000..706962d --- /dev/null +++ b/src/server/net/listenserver.cpp @@ -0,0 +1,40 @@ +#include "listenserver.h" +#include "client.h" +#include + +#define MAX_CLIENTS 50 + +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 + */ + +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); + } +} -- cgit v1.2.3-55-g7522