![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Norrius |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 26 Регистрация: 30.12.2011 Пользователь №: 3105 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Добрый день, уважаемые. После нескольких тестов и вдумчивого чтения документации я выяснил, что TCP буферизует данные, а открыть сокет в режиме Unbuffered нельзя.
Кроме того, мои данные делятся на две категории: большой пакет до нескольких метров в начале и при смене настроек сервера и беспрестанно посылающиеся маленькие пакеты, которые, в идеале, должны приходить сразу же, как только отправлены. Для первого я оставил TCP, так что серверу нужно держать соединение по обоим протоколам. Информация будет пересылаться в обе стороны. Для TCP есть класс QTcpServer, предоставляющий функционал для работы со многими клиентами, но может ли такое сделать на протоколе UDP, который, как я понял, не оперирует соедиениями? UPD. Все это бред, удалось заставить TCP сокет передавать данные нормально. Сообщение отредактировал Norrius - 25.8.2012, 12:22 |
|
|
![]() |
Алексей1153 |
![]()
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
Мне нужна быстрая реакция на каждый пакет. Ждать, пока сообщений по 5-10 байт наберется на два килобайта, не получится. где у меня про 5-10 байт ? Я говорю - слать пакетами по 2 кБ (не больше. Меньше - пожалуйста). Насчёт сжирания проца поллингом: вычитывать данные нужно тогда, когда есть что-то новое. Если нет, делать паузу в, скажем, 1 мс. Я делал такую вещь, прекрасно работает (в отдельном потоке) Сообщение отредактировал Алексей1153 - 27.8.2012, 11:07 |
|
|
![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 23.6.2025, 8:56 |