Название: Перенести сокет в другой объект Отправлено: markie от Август 07, 2013, 20:59 Всем привет! Хочу перенести сокет в другой объект. Делаю следующее:
Код: _socket->disconnect(SIGNAL(readyRead())); В конструкторе SaveAction: Код: _socket = new QTcpSocket(this); В итоге, в объекте SaveAction можно записывать данные в сокет, но вот считывать не получается. Не подскажете, как можно реализовать подобное? Название: Re: Перенести сокет в другой объект Отправлено: mutineer от Август 08, 2013, 10:15 Почему не получается? Сигнал не приходит?
Название: Re: Перенести сокет в другой объект Отправлено: Fregloin от Август 08, 2013, 10:26 Код: connect(_socket, SIGNAL(readyRead()),this,SLOT(reading())); Укажите явно приёмника this. Поидее должно работать. Кстати посмотрите в лог консоли, не ругается ли на то что сокет находится в другом потоке (как вариант). Название: Re: Перенести сокет в другой объект Отправлено: mutineer от Август 08, 2013, 10:31 А что изменится если this явно указать?
Название: Re: Перенести сокет в другой объект Отправлено: markie от Август 08, 2013, 11:46 Да, не проходит сигнал. И вообще, если убрать в первом куске кода строчку с disconnect, то отрабатывает сигнал в объекте, из которого я пытаюсь перенести сокет. Может, нужно ещё какую-нибуь ф-цию вызвать, помимо disconnect'a? (только чтобы соеинение не разорвалось)
Название: Re: Перенести сокет в другой объект Отправлено: mutineer от Август 08, 2013, 11:49 А зачем вообще "переносить" сокет? может его просто перепривязать к другим слотам?
Дело скорее всего в этом: Цитировать Note: It is not possible to initialize two abstract sockets with the same native socket descriptor. Название: Re: Перенести сокет в другой объект Отправлено: markie от Август 08, 2013, 13:09 Да, вы правы, придётся не переносить в другой объект, а делать всё в текущем.
Спасибо, что помогли разобраться в проблеме. Название: Re: Перенести сокет в другой объект Отправлено: mutineer от Август 08, 2013, 14:12 Ну или передевай в объект не дескриптор сокета, а указатель
|