Название: Проверка на переполнение приемного буфера Отправлено: YvenTitan от Январь 13, 2017, 10:31 Доброе утро
У меня такая сложность. Я пересылаю много данных и часто с серверной части на клиентскую. Минут через 10 работы программы появляются признаки того, что часть пакетов теряются. Клиентская часть написана с помощью класса, наследованного от QTcpSocket. Можно как-то проверить, было переполнение приемного буфера клиентской части или нет? Название: Re: Проверка на переполнение приемного буфера Отправлено: Пантер от Январь 13, 2017, 10:46 > Клиентская часть написана с помощью класса, наследованного от QTcpSocket
Извиняюсь, нахрена? Название: Re: Проверка на переполнение приемного буфера Отправлено: YvenTitan от Январь 13, 2017, 10:47 А как правильнее?
Название: Re: Проверка на переполнение приемного буфера Отправлено: Пантер от Январь 13, 2017, 10:52 Не наследоваться.
Название: Re: Проверка на переполнение приемного буфера Отправлено: YvenTitan от Январь 13, 2017, 10:54 Что это даст?
Название: Re: Проверка на переполнение приемного буфера Отправлено: Пантер от Январь 13, 2017, 11:01 Это даст нормальную архитектуру. А на счет переполнения я не понял, объясни подробнее.
Название: Re: Проверка на переполнение приемного буфера Отправлено: YvenTitan от Январь 13, 2017, 11:10 Как я понимаю, есть буфер, из которого вычитываются пришедшие данные с помощью функции socket->readAll(). Если слишком медленно вычитывать данные, то этот буфер переполнится и пришедшие данные начнут теряться. Возможно, я не так себе все представляю.
Вопрос в том, можно ли как-то проверить, переполнился этот буфер или нет? Название: Re: Проверка на переполнение приемного буфера Отправлено: Пантер от Январь 13, 2017, 11:19 socket->bytesAvailable () покажет сколько данных в буфере. Но пакеты не будут теряться, буфер просто будет расти и расти.
Название: Re: Проверка на переполнение приемного буфера Отправлено: YvenTitan от Январь 13, 2017, 11:26 Он может вырасти на десятки мегабайт? Я смотрю с помощью диспетчера задач, и он показывает, что приложение не "ворует" память в больших количествах
Название: Re: Проверка на переполнение приемного буфера Отправлено: Пантер от Январь 13, 2017, 11:28 Может больше, чем на десятки. Скорее всего, у тебя проблема где-то в другом месте. Если бы привел код, можно было бы точнее сказать.
Название: Re: Проверка на переполнение приемного буфера Отправлено: cuntroll от Январь 25, 2017, 09:34 на десятки, но не до бесконечности, т.к. SO_RCVBUF таки ограничен максимальным значением int'a ;D
Название: Re: Проверка на переполнение приемного буфера Отправлено: Пантер от Январь 25, 2017, 09:39 на десятки, но не до бесконечности, т.к. SO_RCVBUF таки ограничен максимальным значением int'a ;D У меня как-то память текла гигами, долго не мог понять, в чем проблема. А проблема оказалась в том, что я запускал QProcess и читал его stdout, а на stderr клал болт - в итоге у меня в stderr все копилось и копилось... Решилось все закрытием неиспользуемых каналов. |