ハードウェアからマルチキャストデータを受信する必要があるアプリケーションを作成しています。正常に動作しています。ときどき、アプリケーションの制御外で、ブロードキャストしているハードウェアが再起動します。ドキュメントを読んだことから、UdpClient.Receive
メソッドがデータを受信するまでブロックすることが私の理解です。したがって、ハードウェアが再起動すると、このコード行がブロックされると想定しています。最終的に、ハードウェアがオンラインに戻ってブロードキャストを再開すると、アプリケーションはその回線で再起動するはずです。これは正しいです?私は何かを理解していませんか?私のアプリケーションで見ているのは、この行がブロックされ、ハードウェアが再起動した後でも、二度と回復しないということです。これがコードスニペットです。
IPAddress _groupAddress = IPAddress.Parse("172.16.20.1");
UdpClient _client = new UdpClient(7095);
IPEndPoint _ep = new IPEndPoint(_groupAddress, 7095);
_client.JoinMulticastGroup(_groupAddress);
bool _cancelled = false;
while (!_cancelled)
{
byte[] _bytes = _client.Receive(ref _ep);
..process bytes..
}