我正在使用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++程序中看到它。
为什么我的程序无法捕获其他人可以访问的数据包?为什么我会丢包?计算机是否可能太慢(或太忙)无法接收数据包?
我每秒接收和使用至强E3处理器约2万用包,这应该是更加有足够的我想......
也许是因为UDP不可靠。你会丢包,可能你根本没有收到任何消息。 – dowhilefor 2012-03-22 16:46:28
@dowhilefor我写了这个消息不会丢失!因为我确实在另一个程序的同一台机器上看到它。所以消息被交给网卡驱动程序。此外,我的程序不断失去信息,当另一个程序不!所以问题不在UDP,程序问题。 – javapowered 2012-03-22 16:52:31
@javapowered - 是的,是的。 – 2012-03-22 17:08:02