C# UDP-клиент прекращает прослушивание, если не отправляет пакеты обратно - PullRequest
0 голосов
/ 17 апреля 2020

Я разрабатываю простую клиент-серверную игру в единстве, я реализовал TCP (начало / конец отправки), все работает с TCP. Но когда я внедряю UDP, мой клиент перестает слушать, если он не отправляет пакеты обратно на сервер.

Моя структура:
Клиент подключается к серверу по протоколу tcp
Подтверждение соединения с сервером (отправка tcp-пакета)
Клиент подключается по UDP к тому же локальному порту tcp-соединения

Когда игра начинается, сервер отправляет позицию 10 раз в секунду. Клиент правильно получает мало, а потом ничего. Когда я увеличиваю количество пакетов в секунду, отправляемых сервером, клиент получает больше пакетов, но, возможно, через 0,2 с c (приблизительно) клиент прекращает прием. Я проверил с wireshark, сервер продолжает отправлять пакеты udp.

Когда я вручную реализовал ответ для каждого UDP-пакета, который получает клиент (отправляя пустой пакет на сервер), тогда клиент продолжает слушать. Это может быть решением для отправки пакета UDP вручную после каждого пакета, полученного клиентом, но мы теряем интерес к UDP, и это очень глупо.

Я использую асинхронные c# методы begin send / end send и начать получать / заканчивать получать. Я сделал все свои тесты с телефоном 4G для клиента.

У кого-нибудь есть идея или замечание?

Спасибо, и позаботьтесь о себе дома.

...