Сокеты: иногда (редко) пакеты теряются при получении

я используюSocket получать данные от многоадресной рассылки udp. Код тривиален:

s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
....
while (true)
{
    int count = 0;
    try
    {
        count = socket.Receive(byteArray);
    }
    catch (Exception e)
    {
        Console.WriteLine(e.Message);
        return;
    }
    if (count > 0)
    {
        OnNewMessage(new NewMessageEventArgs(byteArray, count));
    }
}

Проблема в том, что иногда я теряю пакеты. Не слишком часто, ~ раз в 2 минуты.

Я уверен, что пакет прибыл, потому что я вижу его в другой программе C ++, запущенной на том же компьютере и настроенной на получение тех же пакетов.

Почему моя программа не может поймать пакеты, которые могут другие? Почему я теряю пакеты? Возможно ли, что компьютер слишком медленный (или слишком занят) для приема пакетов?

Я получаю около 2000 пакетов в секунду и использую процессор Xeon E3, этого должно быть достаточно, я думаю ...

Ответы на вопрос(2)

Ваш ответ на вопрос