У нас есть клиент UDP, который обменивается данными с сервером.Ответ UDP, полученный после таймаута
Сервер дает один ответ на каждый запрос.
Клиент отправляет запрос и ждет ответа 5 секунд.
Если ответ сервера не был получен на 5 секунд - клиент предполагает, что пакет был потерян в сети (это UDP ...), записывает отчет в журнал и отправляет следующий запрос.
Но иногда у нас есть задержка в сети, и ответ сервера приходит через 5 секунд.
Опишем сценарий:
Клиент посылает пакет под названием «X».
Время ожидания 5 секунд истекло, и клиент сообщает, что «X» является потерянным пакетом.
Клиент отправил другой пакет с именем «Y».
Ответ сервера на «X» теперь предоставляется клиенту.
Клиент видит, что ответ несовместим с запросом и сообщает об этом журналу.
Клиент отправил другой пакет с именем «Z».
Ответ сервера на «Y» теперь предоставляется клиенту.
Клиент видит, что ответ несовместим с запросом и сообщает об этом журналу.
И это бесконечная петля!
Что мы можем сделать?
Вы говорите, что клиент перестает ждать реального ответа (так что он не ждет полных 5 секунд), если он получает ответ, который не соответствует самому последнему запросу? – nos
редко обработка занимает 6 секунд или более (я не могу ее идентифицировать). –
Хорошо, но как насчет вопроса, который я задал? Ваш клиент отправляет новый запрос сразу после получения неожиданного ответа? – nos