Здравствуйте, пишу небольшое клиент- серверное приложение на Qt. Использую QTcpServer. Все соединения хранятся в
QMap<int,QTcpSocket*>
(дескриптор и указатель на сокет).
При отключении сокета вызывается slotDisconnected(), который должен удалить информацию о соединении из QMap:
int userId= ((QTcpSocket*)sender())->socketDescriptor();
Clients.remove(userId);
Здесь- то и поджидает ошибка. Дескриптор userId всегда равен -1, потому как сам объект сокета уже уничтожен.
В таком случае, как понять, какой именно элемент QMap удалять? Идентифицировать все через IP и номер порта?