Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > QTCPServer, срабатывание сигналов и слотов


Автор: Filin88 12.9.2014, 03:31
Здравствуйте!

Делаю сервер, один поток. К нему в теории будут подключаться от 100 до 1000 клиентов. Механизм обработки сервером новых подключений реализую через сигналы и слоты. Суть в том, что каждое соединение у меня заносится в вектор со структурами:
Код

typedef struct {
    QTcpSocket* pClientSocket;
    bool find_13;
    QByteArray* incoming_bytes;
} struct_incoming_connect


Когда передаются байты, я ищу в этом векторе нужный сокет по адресам указателей и таким образом вычисляю нужный буфер с принятыми байтами incoming_bytes для данного соединения. При разрыве соединения клиентом происходит вызов слота deleteLater() и обNULLение pClientSocketа в соответствующей структуре. Меня беспокоит одновременное подключение нескольких клиентов к серверу, получается что при соединении будут вызываться одновременно несколько слотов newConnection, а вектор то с адресами один. Как бы они не передрались за него. Могут ли одновременно вломиться в одну ячейку вектора несколько клиентов и захватить один буфер? Или у слотов есть последовательная обработка и у меня параноя? Насколько корректна данная схема обработки соединения с клиентами?

Автор: borisbn 12.9.2014, 10:23
Не передерутся))
Твой newConnection будет вызываться последовательно в том потоке, в котором создан сервер

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)