Time for action – detecting a disconnect
When a client terminates the connection, we have to delete the socket from the local m_clients
list. Therefore, we have to connected the socket's disconnected()
signal to:
void TcpServer::removeConnection() { if (QTcpSocket *con = qobject_cast<QTcpSocket*>(sender())) { ui->log->insertPlainText( QString("* Connection removed: %1, port %2\n") .arg(con->peerAddress().toString()) .arg(QString::number(con->peerPort()))); m_clients.removeOne(con); con->deleteLater(); ui->disconnectClients->setEnabled(!m_clients.isEmpty()); } }
What just happened?
After getting the socket that emitted the call through sender()
, we post the information that a socket is being removed. Then, we remove the socket from m_clients
and ...
Get Game Programming Using Qt now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.