我正在开发基于 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”上再次更改。
任何人都知道发生这种情况的确切原因以及对此的任何有效解决方案。