Russian Qt Forum
Ноябрь 22, 2024, 19:57
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Работа с сетью
>
Проверка на переполнение приемного буфера
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Проверка на переполнение приемного буфера (Прочитано 8972 раз)
YvenTitan
Самовар
Offline
Сообщений: 174
Проверка на переполнение приемного буфера
«
:
Январь 13, 2017, 10:31 »
Доброе утро
У меня такая сложность. Я пересылаю много данных и часто с серверной части на клиентскую. Минут через 10 работы программы появляются признаки того, что часть пакетов теряются. Клиентская часть написана с помощью класса, наследованного от QTcpSocket.
Можно как-то проверить, было переполнение приемного буфера клиентской части или нет?
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Проверка на переполнение приемного буфера
«
Ответ #1 :
Январь 13, 2017, 10:46 »
> Клиентская часть написана с помощью класса, наследованного от QTcpSocket
Извиняюсь, нахрена?
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
YvenTitan
Самовар
Offline
Сообщений: 174
Re: Проверка на переполнение приемного буфера
«
Ответ #2 :
Январь 13, 2017, 10:47 »
А как правильнее?
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Проверка на переполнение приемного буфера
«
Ответ #3 :
Январь 13, 2017, 10:52 »
Не наследоваться.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
YvenTitan
Самовар
Offline
Сообщений: 174
Re: Проверка на переполнение приемного буфера
«
Ответ #4 :
Январь 13, 2017, 10:54 »
Что это даст?
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Проверка на переполнение приемного буфера
«
Ответ #5 :
Январь 13, 2017, 11:01 »
Это даст нормальную архитектуру. А на счет переполнения я не понял, объясни подробнее.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
YvenTitan
Самовар
Offline
Сообщений: 174
Re: Проверка на переполнение приемного буфера
«
Ответ #6 :
Январь 13, 2017, 11:10 »
Как я понимаю, есть буфер, из которого вычитываются пришедшие данные с помощью функции socket->readAll(). Если слишком медленно вычитывать данные, то этот буфер переполнится и пришедшие данные начнут теряться. Возможно, я не так себе все представляю.
Вопрос в том, можно ли как-то проверить, переполнился этот буфер или нет?
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Проверка на переполнение приемного буфера
«
Ответ #7 :
Январь 13, 2017, 11:19 »
socket->bytesAvailable () покажет сколько данных в буфере. Но пакеты не будут теряться, буфер просто будет расти и расти.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
YvenTitan
Самовар
Offline
Сообщений: 174
Re: Проверка на переполнение приемного буфера
«
Ответ #8 :
Январь 13, 2017, 11:26 »
Он может вырасти на десятки мегабайт? Я смотрю с помощью диспетчера задач, и он показывает, что приложение не "ворует" память в больших количествах
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Проверка на переполнение приемного буфера
«
Ответ #9 :
Январь 13, 2017, 11:28 »
Может больше, чем на десятки. Скорее всего, у тебя проблема где-то в другом месте. Если бы привел код, можно было бы точнее сказать.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
cuntroll
Гость
Re: Проверка на переполнение приемного буфера
«
Ответ #10 :
Январь 25, 2017, 09:34 »
на десятки, но не до бесконечности, т.к. SO_RCVBUF таки ограничен максимальным значением int'a
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Проверка на переполнение приемного буфера
«
Ответ #11 :
Январь 25, 2017, 09:39 »
Цитата: cuntroll от Январь 25, 2017, 09:34
на десятки, но не до бесконечности, т.к. SO_RCVBUF таки ограничен максимальным значением int'a
У меня как-то память текла гигами, долго не мог понять, в чем проблема. А проблема оказалась в том, что я запускал QProcess и читал его stdout, а на stderr клал болт - в итоге у меня в stderr все копилось и копилось... Решилось все закрытием неиспользуемых каналов.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...