Я некоторое время назад задавал здесь вопросы по Сервер-Клиент -программам дла TCP/IP для режима реального времени,-часть кода можно увидеть в темах, которые я открывал раньше(хотя там и изменилось многое).Суть такая: клиент посылает циклично(в локальной сети) строки с актуальным временем и номером сообщения, а сервер пишет ети строки в файл и снабжает их при этом собственным временем.
Я проследил за пересылаемыми пакетами в Wireshark. Там видно, что клиент посылает постоянно 23 байт строки, но потом, после определенного времени он посылает за раз 5 пакетов,- то биш 115 байт. Я посмотрел, сколько времени проходит между пакетами,- 1,3 мс при пересылке данных и 0,2 мс при пересылке подтверждения. Затем по непонятной мне причине подтверждение приходит через 6,9 мс, за это время на сервере собирается 5 пакетов, и они все отсылаются. Затем ещё некоторое время продолжается утихомиривание этого процесса и через некоторое время всё возвращается к обычной работе.
Может ли кто мне подсказать почему так циклично время от времени увеличивается время пересылки подтверждения и как этого можно избежать?
Пытался отключать нагл-алгоритм(TCP_NODELAY), но это ещё более ухидшило картину.
Единственное решение, которое я пока нашёл,- я вставил паузу между отсылками сообщений 5 мс и избавился таким образом от нежелательных одновременных пересылок множества пакетов за раз. Но таким образом я могу пересылать гораздо меньше сообщений в единицу времени, а это нежелательно.