@AlexSer

Как решить проблему потерь пакетов при пробросе порта на tcp server?

Написал простой TCP сервер для приема данных на порт(windows).
Пробрасываю com через nc на порт сервера.
Сторона сервера, чтение сокета:
void TcpServer::ReadData()
{
          QByteArray byte=socket->readAll();
          terminal->append(byte);
}

На клиенте линукс проброс портов:
nc IP port < /dev/ttyACM0>/dev/ttyACM0
При передаче с устройства теряются пакеты, что может влиять?
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
@res2001
Developer, ex-admin
что может влиять?

Много факторов: медленная/высокая скорость на одном из портов и/или не достаточная длина буфера, большая загрузка ЦП во время работы (причем он может быть загружен любой не связанной задачей), плохое качество связи по сети, что приводит к повторной передаче и тормозит текущую передачу, что приводит к переполнению буферов и т.п.
Учитывая, что в TCP данные не могут теряться, значит они теряются либо по дороге в nc, либо внутри nc.
Если в nc есть возможность поиграть с размерами буферов - поэкспериментируйте с ними. Но часто универсальные решения не являются оптимальными для конкретной задачи.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы