public Dialog(ConnectionModel model) { DataContext = model; InitializeComponent(); worker = new DiscoveryWorker(); logger = new ConnectionLogger(LogBox); }
public StartupForm() { InitializeComponent(); RefreshDevices(); client = new UdpClient(); var groupAddr = IPAddress.Parse("239.101.13.37"); client.JoinMulticastGroup(groupAddr); client.EnableBroadcast = true; multicastEndpoint = new IPEndPoint(groupAddr, 11111); names = new Dictionary <long, string>(); addresses = new Dictionary <long, IPEndPoint>(); DiscoveryWorker.RunWorkerAsync(); EmitBroadcastMessage(); }
private void DiscoveryWorker_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) { IPEndPoint remoteEndpoint = new IPEndPoint(IPAddress.Any, 50); while (true) { try { byte[] data = client.Receive(ref remoteEndpoint); if (data.Length >= 12) { try { var code = Encoding.ASCII.GetString(data.Take(3).ToArray()); if (code != "Hey") { continue; } var id = BitConverter.ToInt64(data.Skip(3).Take(8).ToArray(), 0); var name = Encoding.ASCII.GetString(data.Skip(11).ToArray()); names[id] = name; addresses[id] = remoteEndpoint; DiscoveryWorker.ReportProgress(1); DiscoveryWorker.ReportProgress(0); } catch { Console.WriteLine("got an invalid packet"); continue; } } } catch { return; } } }