Implemented basic listening functionality

This commit is contained in:
0xFEEDC0DE64 committed 2018-09-22 02:11:37 +02:00
1 parent a62aa7ec5a
commit 00f31676dc
6 files changed
+152 -5

No files matched your search

+44
View File
@@ -0,0 +1,44 @@
#include "server.h"
#include <QTcpServer>
#include <QDateTime>
#include <QTimerEvent>
#include "client.h"
Server::Server(QObject *parent) :
QObject(parent),
m_server(new QTcpServer(this))
{
if(!m_server->listen(QHostAddress::Any, 1234))
qFatal("could not start listening %s", m_server->errorString());
connect(m_server, &QTcpServer::newConnection, this, &Server::newConnection);
m_timerId = startTimer(1000);
}
void Server::timerEvent(QTimerEvent *event)
{
if(event->timerId() == m_timerId)
Q_EMIT distribute(QDateTime::currentDateTime().toString("dd.MM.yyyy HH:mm:ss\r\n").toUtf8());
else
QObject::timerEvent(event);
}
void Server::newConnection()
{
auto socket = m_server->nextPendingConnection();
if(!socket)
{
qWarning() << "null socket received";
return;
}
auto client = new Client(socket, this);
connect(this, &Server::distribute, client, qOverload<const QByteArray &>(&Client::write));
m_clients.insert(client);
connect(client, &QObject::destroyed, this, [this, client](){
m_clients.remove(client);
});
}