Ситуация, которую я имею, состоит в том, что клиент Linux использует UDP Socket. Клиент отправляет сообщение, и в случае отсутствия ответа в течение 10 секунд, клиент повторяет попытку через 10 секунд.
В случае, когда соединение не работает, многие запросы отправляются с клиента, в то время как на стороне сервера ничего не получено. Как только соединение установлено, я обнаружил, что все предыдущие сообщения получены в один и тот же момент на сервере, что означает, что оно было буферизовано, и это вызывает много проблем из-за дублированных сообщений, полученных в один и тот же момент на стороне сервера.
TCPDUMP ON на стороне клиента:
21:01:14.691903 IP 172.123.13211 > 172.34.13211: length 88 "1st at second 14"
21:01:24.692791 IP 172.123.13211 > 172.34.13211: length 88 "2nd at second 24"
21:01:34.694930 IP 172.123.13211 > 172.34.13211: length 88 "3rd at second 34"
21:01:44.696020 IP 172.123.13211 > 172.34.13211: length 88 "4th ate second 44"
Сервер TCPDUMP после установления соединения:
12:02:01.509518 IP 172.123.13211 > 13211: length 88 "Received 1st at second 1"
12:02:01.517841 IP 172.123.13211 > 13211: length 88 "Received 2nd at second 1"
12:02:01.543759 IP 172.123.13211 > 13211 length 88 "Received 3rd at second 1"
12:02:01.550741 IP 13211 > 172.123.13211: length 36
12:02:01.567948 IP 172.123.13211 > .13211: length 88
Мне нужно понять, если используется сокет UDP и соединение не работает.
как избежать буферизации пакетов при нехватке
Код клиента на C ++
Спасибо