我使用c#UdpClient(代码中的客户端)来接收多播组的数据 . 在一个while循环中,后续发生:
while(receiving)
//First i check if data is available, polltime = 100ms
if(client.Client.Poll(polltime, SelectMode.SelectRead))
{
//if data is present
data = client.Receive(ref remoteEp);
...
}
else
{
//100ms
Thread.sleep(sleeptime);
}
不知怎的,我经常错过应该在多播上的数据包(如果有多个数据包),udp数据包丢失就不会那么多了 . 接收可以做得更好还是有人知道问题)
Edit1:发送的数据也是由c#UdpClient发送的,是字节数组,其大小为1024
Edit2:在Wireshark中,我可以看到丢失的数据包没有到达,所以问题可能是udp丢包?
1 回答
我建议接收循环的以下实现: