crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Multiple socket notifiers for same socket 3640 and type Read, Не получается опрашивать сокет по таймеру.
gvenihvivar
  опции профиля:
сообщение 7.3.2014, 12:51
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 36
Регистрация: 6.11.2013
Пользователь №: 3967

Спасибо сказали: 0 раз(а)




Репутация:   0  


Скопировала пример tcp сервера и сокета отсюдова.
В изначальном виде он прекрасно работает. Но для моей задачи необходимо, чтобы инициатором опроса раз в секунду был сервер, который находится на пк. А удаленное устройство отвечало на этот запрос.
Таймер я вставила и в принципе запросы сервер исправно отправляет. Связка выглядит следующим образом:

QTimer *timer = new QTimer(this);
    QObject::connect(timer, SIGNAL(timeout()), this , SLOT(slotSendToClient()));
    timer->start(1000);
    pCS = pClientSocket->socketDescriptor();


SLOT(slotSendToClient()) содержит код, который отправляет сообщение. Дескриптор pCS = pClientSocket->socketDescriptor() это статическая переменная, объявленная вне класса (не уверенна, как ее правильно обозвать).

И сам слот:

void MyServer::slotSendToClient()
{
    QTcpSocket * clientSocket = new QTcpSocket;
    clientSocket->setSocketDescriptor(pCS);
    sendToClient(clientSocket, "bla bla bla blaaaaa");
}


В итоге после каждой отработки сокета появляется ошибка

QSocketNotifier: Multiple socket notifiers for same socket 3640 and type Read.

Подскажите как избавится от ошибки. Идеи уже все закончились.
Пыталась избавиться от дескриптора. Объявила сокет в хидере, но программа завершается ошибкой.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 3.1.2025, 13:05