public Channel(IPAddress ip, int port) { var settings = new MulticastSettings { Address = ip, Port = port, TimeToLive = 3 }; _listener = new MulticastListener(settings); _broadcaster = new MulticastBroadcaster(settings); _subject = new Subject <Message>(); _listener.Received.Subscribe(OnReceive); }
private void BroadcastCallback(IAsyncResult ar) { try { MulticastBroadcaster broadcaster = (MulticastBroadcaster)(ar.AsyncState); UdpClient udpClient = broadcaster.UdpClient; int bytesSent = udpClient.EndSend(ar); } catch (ObjectDisposedException) { // expected exception fired when the socket is closed - swallow it up } catch (Exception ex) { throw ex; } }
private void button2_Click(object sender, System.EventArgs e) { Console.WriteLine("Send"); // Act using (var broadcaster = new MulticastBroadcaster(testSettings)) { c++; //var n = c + " hello world"; var n = new XElement("y", new XAttribute("c", "" + c), "hello world" ).ToString(); //c + " hello world"; broadcaster.Broadcast(Encoding.UTF8.GetBytes(n)); } }
/// <summary> /// 构造器 /// </summary> /// <remarks> /// 远程节点启动时会绑定所有网络接口以进行接收 /// </remarks> /// <param name="name">节点名字</param> /// <param name="size">组播分片长度</param> /// <param name="group">组播地址</param> /// <param name="newMemberDetected">发现新成员上线时的回调</param> /// <param name="additions">自定义组件</param> public RemoteHub(string name = null, uint size = 0x4000, IPEndPoint group = null, Action <string> newMemberDetected = null, params IComponent[] additions ) { _groupMonitor = new GroupMonitor(detected: newMemberDetected); _broadcaster = new MulticastBroadcaster(size); _scope = new DynamicScope(); _scope.Setup(new Name(name ?? $"RemoteHub[{Guid.NewGuid()}]")); _scope.Setup(_group); _scope.Setup(_groupMonitor); _scope.Setup(_networks); _scope.Setup(new MulticastSockets(group ?? Default.Group)); _scope.Setup(Monitor); _scope.Setup(_broadcaster); _scope.Setup(_receiver); _scope.Setup(_slicer); _scope.Setup(_addresses); _scope.Setup(_servers); _scope.Setup(_synchronizer1); _scope.Setup(_synchronizer2); _scope.Setup(_client); _scope.Setup(_server); Monitor.BindAll(); foreach (var dependency in additions) { _scope.Setup(dependency); } }
private void button2_Click(object sender, System.EventArgs e) { Console.WriteLine("Send"); // Act using (var broadcaster = new MulticastBroadcaster(testSettings)) { c++; //var n = c + " hello world"; var n = new XElement("y", new XAttribute("c", "" + c), "hello world" ).ToString(); //c + " hello world"; broadcaster.Broadcast(Encoding.UTF8.GetBytes(n)); } }