Нормально ли создавать несколько сокетов по одному дескриптору?
У меня есть несколько потоков. От каждого из них может прийти сообщение. Это сообщение необходимо разослать остальным клиентам через их сокеты.
Я сделал так: в пространстве, где хранятся сами потоки, я сохраняю их дескрипторы в специальный массив. Затем, когда от кого-то приходит сообщение, я вызываю метод рассылки этого сообщения другим сокетам, а именно создаю в цикле сокеты по этим самым дескрипторам, хранящимся в общем пространстве, и уже через этот сокет, созданный в этом потоке, пытаюсь отправить сообщение, но в итоге мне выдает ошибку:
QSocketNotifier: Multiple socket notifiers for same socket 972 and type Read
и программа падает... Выдает как раз на том месте, где я устанавливаю дескриптор.
Скажите, пожалуйста, в чем ошибка моих суждений?
При подключении клиента и выделении потока я так и делаю: беру следующее подключение, беру сокет и передаю его в объект, который затем moveToThread().
Но здесь, почему-то, не работает.
xorknown, socketDescriptor
Спасибо, я понял, что моя архитектура - полное убожество. Умны люди с большой репой на stackoverflow подсказали мне, что сервер на Qt может спокойно работать в одном потоке даже с 10-20к сокетами) Так что я переделываю сервер в один поток. Переделывать немного, оказалось, и так действительно проще.