マルチキャストを使用して継続的にメッセージを送信する ac# ベースのアプリケーションに取り組んでいます。すべてが正常に機能します。受信側のクライアントは、ネットワークが切断されるまで継続的にメッセージを受信します。しかし、ネットワークに再接続すると、受信コードを介して同じマシン上のすべてのメッセージを収集するまで、同じネットワーク上のクライアント マシンはメッセージを受信しません。
送信コード:
using (UdpClient udpclient = new UdpClient())
{
IPAddress multicastaddress = IPAddress.Parse("239.0.0.222");
try
{
udpclient.ExclusiveAddressUse = false;
udpclient.MulticastLoopback = false;
udpclient.JoinMulticastGroup(multicastaddress);
IPEndPoint remoteep = new IPEndPoint(multicastaddress, 8191);
int j = udpclient.Send(byteBuffer, byteBuffer.Length, remoteep);
}
catch (Exception e)
{
udpclient.DropMulticastGroup(multicastaddress);
udpclient.Close();
}
finally
{
udpclient.DropMulticastGroup(multicastaddress);
udpclient.Close();
}
});
コードを受け取る:
var udpClientDispose = new UdpClient(_settingsViewModel.SyncPort);
var ipEndPoint = new IPEndPoint(IPAddress.Any, 8191);
IPAddress multicastaddress = IPAddress.Parse("239.0.0.222");
udpClientDispose.JoinMulticastGroup(multicastaddress, "192.168.0.12");
var timeElapsedSinceMasterMessageReceived = new Stopwatch();
Stopwatch sw = new Stopwatch();
sw.Start();
while (sw.ElapsedMilliseconds < 5000)
{
udpClientDispose.Receive(ref ipEndPoint);
}
udpClientDispose.Close();`
システムですべてのメッセージが収集されているようですが、特定のマルチキャスト アドレス、つまり「239.0.0.222」でネットワーク ジャムが発生しています。アドレスを変更しようとしても機能しますが、「239.0.0.222」では機能しません。
これが起こっている正確な理由と、これに対する有効な解決策は誰でも知っています。