посчитать через протокол UDP количество потерянных пакетов
Вообще не понимаю как можно считать дейтаграммы, так как в этом коде все сообщения доходят до получателя и numberOfSentBytes всегда равно количеству принятых байт. и не нашел в классе UdpClient ничего что могло было бы связанно с отправкой дейтаграмм и потерей пакетов ...
UdpClient client = new UdpClient(8001);
string message = "Hello world!";
byte[] data = Encoding.UTF8.GetBytes(message);
int numberOfSentBytes = client.Send(data, data.Length);
...
Ответы (1 шт):
Контроль доставки в UDP отсутствует в протоколе. Все контроллирующие функции вы можете реализовать только своими силами.
Например вы можете нумеровать пакеты при передаче. 1,2,3,4,5... и с другой стороны то же самое. При чем в первом пакете можно указать количество передаваемых. Если вдруг получена последовательность 1,3,2,5 из 5. То значит 4 пакет потерялся, и можно попросить отправить его снова.
Да, кстати, порядок получения пакетов во времени может отличаться от порядка отправки, здесь тоже у UDP нет никаких гарантий.
Ну это я самый примитивный случай предположил. Прелесть отсутствия стандарта контроля доставки здесь в том, что у вас полная свобода творчества. Можно не только пакеты считать можно их заведомо отправлять в 2 раза больше, дублируя все данные дважды. Тогда потерей одного пакета можно будет вообще пренебречь. Я так эти идеи могу вечно генерировать.