Название: QTcpSocket в Qthread, проблема "приема" сигнала connected() от сокета !!!! Отправлено: garryHotDog от Май 25, 2010, 18:21 Задача:
Необходимо сделать поток, который будет управлять определенным количеством сокетов...что бы не было блокировки использую соединение connectToHost() без waitForConnected(), когда придет сигнал connected() от сокета, я выставляю флаг в классе сокета, что соединение установлено и работаю с сокетом на чтение\отправку Проблема после вызова connectToHost(), сокет проходит все состояние (hostlookup, connecting), но в состояние ConnectedState не приходит и сигнал connected() не приходит!? НО если после функции connectToHost() поставить waitForConnected() - сигнал connected() тут как тут!?...пол дня ломал голову так ничего и не решил проблему...привожу пример кода конструктор сокета (соединяю сигналы и слоты) Код
функция соединения Код
- Инициализация потока управления сокетами. Код - исполняемая функция потока run() Код
после вызова Connect() сигнал connected() в сокет не приходит - в этом основная проблема (а если добавить waitForConnected все работает!?).....помоЖите чем моЖите....заранее спасибо за комменты!!! P.s. Асинхронный режим работы сокетов не подойдет (уже пробовал - проц грузится под 100% при 1000 сокетах.) Название: Re: QTcpSocket в Qthread, проблема "приема" сигнала connected() от сокета !!!! Отправлено: kibsoft от Май 25, 2010, 18:49 waitForConnected() а чем тебе не нравится то?
Соединение же не мгновенно происходит..поэтому ты и должен немного подождать. connectToHost("192.168.205.137",6346); выполнится за нано(наверное :)) секунды, а соединение может устанавливаться несколько секунд(зависит от связи).. Название: Re: QTcpSocket в Qthread, проблема "приема" сигнала connected() от сокета !!!! Отправлено: garryHotDog от Май 25, 2010, 18:53 Цитировать waitForConnected() а чем тебе не нравится то? подключение сокетов будет происходить по очереди, поэтому если 1 сокет будет соединяться, то остальные будут ждать...произойдет блокировка!! Название: Re: QTcpSocket в Qthread, проблема "приема" сигнала connected() от сокета !!!! Отправлено: garryHotDog от Май 25, 2010, 20:01 если поставить в конце ф-ии run() - exec(), то сигнал connected() приходит....но как мне тогда сделать потоковый опрос сокетов!?
Название: Re: QTcpSocket в Qthread, проблема "приема" сигнала connected() от сокета !!!! Отправлено: kibsoft от Май 25, 2010, 23:09 Че за "потоковый опрос"? При exec() заработало, т.к. та запустил цикл событий.
Если что-то понял по твоему вопросу, то можешь хранить все сокеты в QList например и оттуда их "опрашивать". |