0

マルチキャストグループでデータを受信するためにc#UdpClient(コード内のクライアント)を使用しています。しばらくの間、次のことが起こります。

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パケット損失である可能性がありますか?

4

1 に答える 1

0

受信ループの次の実装をお勧めします。

while (receiving)
{
    try
    {
        // block until data is present
        data = client.Receive(ref remoteEp);
        ...
    }
    catch (SocketException ex)
    {
        receiving = false;
    }
}
于 2013-01-15T11:05:03.607 に答える