Здравствуйте, гость ( Вход | Регистрация )
Yuriy | Дата 12.3.2014, 23:34 |
Вы, видимо, не очень понимаете, что делаете, поэтому совет про книжку - самый разумный )) А если по коду, то причина, по которой не работает (на самом деле этот код вообще работать нормально не будет никогда): void MyServer::slotNewConnection() { QTcpSocket* pClientSocket = m_ptcpServer->nextPendingConnection(); /* Тут у Вас возвращается объект QTcpSocket*/ ... QTimer *timer = new QTimer(this); /* А подумайте, что будет, если клиент разорвет соединение, а потом восстановит? */ ... } void MyServer::slotSendToClient() { QTcpSocket *clientSocket = new QTcpSocket; /* А тут создается новый QTcpSocket, ну совсем не тот, что в ф-ии MyServer::slotNewConnection(), и так каждую секунду! */ ... } В общем - читайте, а будут вопросы - спрашивайте. ) |
|
gvenihvivar | Дата 10.3.2014, 23:02 |
ok, спасибо за наводку) | |
Trisch | Дата 9.3.2014, 23:09 |
Как вариант, проблема может быть из-за того что у вас несколько сокетов с одним дескриптером. Для примера можете посмотреть реализацию клиента и сервера в книге "Макс Шлее Профессиональное программирование на C++" |
|
gvenihvivar | Дата 7.3.2014, 15:59 |
Вот весь код программы main Раскрывающийся текст
myserver.h Раскрывающийся текст
myserver.cpp Раскрывающийся текст
|
|
Trisch | Дата 7.3.2014, 14:56 |
Можете показать полный код проекта? | |
gvenihvivar | Дата 7.3.2014, 12:51 |
Скопировала пример tcp сервера и сокета отсюдова. В изначальном виде он прекрасно работает. Но для моей задачи необходимо, чтобы инициатором опроса раз в секунду был сервер, который находится на пк. А удаленное устройство отвечало на этот запрос. Таймер я вставила и в принципе запросы сервер исправно отправляет. Связка выглядит следующим образом:
SLOT(slotSendToClient()) содержит код, который отправляет сообщение. Дескриптор pCS = pClientSocket->socketDescriptor() это статическая переменная, объявленная вне класса (не уверенна, как ее правильно обозвать). И сам слот:
В итоге после каждой отработки сокета появляется ошибка QSocketNotifier: Multiple socket notifiers for same socket 3640 and type Read. Подскажите как избавится от ошибки. Идеи уже все закончились. Пыталась избавиться от дескриптора. Объявила сокет в хидере, но программа завершается ошибкой. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.4.2024, 0:46 |