Название: помогите c QUdpSocket Отправлено: zagruzkaaa от Октябрь 04, 2015, 03:55 Есть клиент, который посылает огромное кол-во пакетов на сервер, но только после подтверждения доставки на сервер.
Код: Код: ... и есть сервер, который все это принимает и отсылает обратно ответ о получении. КОд: Код: connect(getSocket, SIGNAL(readyRead()), this, SLOT(GetData())); Возникает такая проблема: через какое-то определенное кол-во отправленных пакетов сервер перестает принимать пакеты. Т.е клиент шлет пакет, а сервер в ответ ничего. Из-за чего может быть? Если убрать подтверждение доставки. т.е чтоб сервер не слал ответ, то почти все пакеты тупо не доходят... Есть подозрение, что зависает где-то на записи в файл. Что скажите? Название: Re: помогите c QUdpSocket Отправлено: zagruzkaaa от Октябрь 04, 2015, 17:40 КОгда добавляю после отправки ответа вот такую строчку
while (getSocket->hasPendingDatagrams()==0); то все передается нормально. Значит проблема возникает в том что. Если программа вышла из функции обработки сигнала, она уже в нее не заходит. Почему? Название: Re: помогите c QUdpSocket Отправлено: torwig от Октябрь 05, 2015, 09:13 Где-то полгода назад работал над приложением получения видео с IP-камер по протоколу RTSP.
После перехода на версию фреймворка 5.3 (сейчас точно не припомню) появилась вот какая штука (впервые заметил на Маке, думал это такая проблема только на этой ОС, но потом проявилось и на Винде/Убунте): сокет принимает UDP-датаграммы, тоже идет Код: connect(mUdpSocket, SIGNAL(readyRead()), SLOT(onUdpSocketReadyRead())); Не знаю в чем дело, но до этого долгое время все работало, а с какой-то новой версии перестало. Название: Re: помогите c QUdpSocket Отправлено: qate от Октябрь 05, 2015, 16:31 Есть подозрение, что зависает где-то на записи в файл. Что скажите? qDebug() на каждую строчку и сниффер - все станет ясно какая ОС ? Название: Re: помогите c QUdpSocket Отправлено: zagruzkaaa от Октябрь 06, 2015, 02:32 Есть подозрение, что зависает где-то на записи в файл. Что скажите? qDebug() на каждую строчку и сниффер - все станет ясно какая ОС ? Помогло такое решение: поставить на цикл условие while (getSocket->pendingDatagramSize()!=-1) Название: Re: помогите c QUdpSocket Отправлено: qate от Октябрь 06, 2015, 08:38 пробовал и на винде и на линуксе. Помогло такое решение: поставить на цикл условие while (getSocket->pendingDatagramSize()!=-1) т.е. getSocket->hasPendingDatagrams() может вернуть false, а getSocket->pendingDatagramSize() вернет > 0 ? |