void Server::addConnection()
{
QTcpSocket *client = nextPendingConnection();
connect(client, SIGNAL(disconnected()),
this, SLOT(removeConnection()));
connect(client, SIGNAL(readyRead()), this, SLOT(onRead()));
connect(client, SIGNAL(error(QAbstractSocket::SocketError)),
this, SLOT(displayError(QAbstractSocket::SocketError)));
client->write(QTextCodec::codecForLocale()->fromUnicode(
QObject::tr("Hello! Привет!") + 0x0d+0x0a ) );
QHostAddress addr = client->peerAddress();
cout << STR(QObject::tr("Подключился новый клиент с адреса %1\n")
.arg( addr.toString() ));
BL.insert(client,"");
AL.insert(client,0);
m_clients.append(client);
QTimer timer;
//timer.singleShot(10000,this,this->removeConnection());
timer.singleShot(10000,this,this->timer_close(client));
}
void Server::timer_close(QTcpSocket *socket)
{
if (AL.value(socket)==0)
{
socket->close();
socket->flush();
socket->close();
m_clients.removeOne(socket);
BL.remove(socket);
socket->deleteLater();
}
}
выводит
D:/Qt/server/server.cpp:74: error: invalid use of void expression
строчка на
"timer.singleShot(10000,this,this->timer_close(client));"
В чём фишка? Сразу извиняюсь за тупые вопросы, в ООП не силён , пишу в основном в asme и С под контроллеры - решил освоить чтото новое.
И ещё вопрос - получается для каждого клиента будет свой таймер? Или же один на все?