Я использую 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, этого должно быть более чем достаточно, я думаю ...1011 *