last changes
This commit is contained in:
80
AdServer/server.cpp
Normal file
80
AdServer/server.cpp
Normal file
@@ -0,0 +1,80 @@
|
||||
#include "server.h"
|
||||
|
||||
Server::Server(QObject *parent) :
|
||||
QObject(parent)
|
||||
{
|
||||
m_server = new QTcpServer(this);
|
||||
next_conn_id = 1;
|
||||
connect(m_server,SIGNAL(newConnection()),this,SLOT(newConnection()));
|
||||
}
|
||||
|
||||
|
||||
QStringList Server::getIpList()
|
||||
{
|
||||
QList<QHostAddress> list;
|
||||
list = QNetworkInterface::allAddresses();
|
||||
QStringList strl;
|
||||
foreach(QHostAddress adr,list) {
|
||||
if (adr.protocol() == QAbstractSocket::IPv4Protocol)
|
||||
strl.append(adr.toString());
|
||||
}
|
||||
return strl;
|
||||
}
|
||||
|
||||
|
||||
void Server::startServer(QHostAddress a)
|
||||
{
|
||||
m_server->listen(a,44461);
|
||||
}
|
||||
|
||||
|
||||
void Server::stopServer()
|
||||
{
|
||||
m_server->close();
|
||||
foreach (Connection * c, clients)
|
||||
c->closeConnection();
|
||||
}
|
||||
|
||||
QString Server::getStatus()
|
||||
{
|
||||
QString s;
|
||||
if (m_server->isListening())
|
||||
s = trUtf8("Running");
|
||||
else
|
||||
s = trUtf8("Stopped");
|
||||
s += "\n";
|
||||
foreach (Connection * c, clients)
|
||||
s += "\n" + c->getStatus();
|
||||
//s += trUtf8("Connections %1").arg(clients.size());
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
void Server::send(const QByteArray &ba)
|
||||
{
|
||||
foreach (Connection * c, clients)
|
||||
c->send(ba);
|
||||
}
|
||||
|
||||
|
||||
void Server::newConnection()
|
||||
{
|
||||
clients.append(new Connection(next_conn_id, m_server->nextPendingConnection()));
|
||||
connect(clients.last(),SIGNAL(disconnected()),this,SLOT(connectionClosed()));
|
||||
connect(clients.last(),SIGNAL(receive(QByteArray)),this,SLOT(received(QByteArray)));
|
||||
next_conn_id++;
|
||||
}
|
||||
|
||||
|
||||
void Server::connectionClosed()
|
||||
{
|
||||
sender()->deleteLater();
|
||||
clients.removeOne((qobject_cast<Connection*>(sender())));
|
||||
}
|
||||
|
||||
|
||||
void Server::received(QByteArray ba)
|
||||
{
|
||||
emit receiveData(ba);
|
||||
send(ba);
|
||||
}
|
||||
Reference in New Issue
Block a user