Implemented basic listening functionality
This commit is contained in:
1 parent
a62aa7ec5a
commit
00f31676dc
6 files changed
+152
-5
No files matched your search
@@ -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);
|
||||
});
|
||||
}
|
||||
Reference in new issue
Block a user