Qt4 TCP-сервер 150 kbit/s |
Здравствуйте, гость ( Вход | Регистрация )
Qt4 TCP-сервер 150 kbit/s |
Eugene K |
14.5.2019, 20:35
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 14.5.2019 Пользователь №: 5103 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравствуйте. У меня есть TCP-сервер на одной машине и TCP-клиент на другой машине. Клиент подключается к серверу и передает ему пакеты данных. Количество пакетов 40000+. Длина пакетов до 400 байт. При выдаче пакетов с периодом 50 мс есть потери пакетов на сервере. При выдаче пакетов с периодом 200 мс потерь пакетов на сервере очень редкие. Программа написана на Qt4. Вопросы: 1. Нужна скорость передачи и приема 150 kbit/s без потерь пакетов. Что доделать в программе? 2. Нужно ли для этого увеличивать частоту выдачи или надо увеличивать объем передаваемых данных? 3. Надо ли использовать QDataStream для передачи данных? 4. Как возможно увеличить скорость передачи-приема до 1 Mbit/s. 5. Как измерить скорость передачи-приема в Kbit/s? Текст сервера:
Текст клиента:
|
|
|
Алексей1153 |
15.5.2019, 7:18
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Eugene K, чтобы пакеты не "терялись", нужно не скорость или размер пакетов менять, а увеличивать размер буфера на приёмной стороне - скорее всего, это именно получатель не успевает их пережёвывать. Желательно максимально быстро вычитывать из сокета и складывать в свой буфер для обработки. Лично я делаю работу с сокетами в отдельном потоке без использования сигналов и слотов, так структура наиболее упрощённая и наглядная. Сам поток занимается только вычиткой, а обработка делается другим потоком
в твой код-рассыпуху я не вникал, уж извини. Но настораживает: - наличие new при отсутствии явных delete (не надо про то, что Qt это иногда позволяет. Лучше не злоупотреблять, если это не виджеты или элементы таблиц) - наличие статического массива Сообщение отредактировал Алексей1153 - 15.5.2019, 7:22 |
|
|
Гость_Гость_* |
19.8.2019, 9:10
Сообщение
#3
|
Гости |
у Вас s_t() должно быть в цикле, типа такого:
думаю, сообщения теряются от того что данные не вычитываются. |
|
|
Текстовая версия | Сейчас: 22.11.2024, 19:48 |