123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Linq;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Controls.Primitives;
- using System.Windows.Data;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Imaging;
- using System.Windows.Navigation;
- using System.Windows.Shapes;
- using System.Windows.Threading;
- using Zeroconf;
- namespace ZeroconfTest.NetFx
- {
- /// <summary>
- /// Interaction logic for MainWindow.xaml
- /// </summary>
- public partial class MainWindow : Window
- {
- public MainWindow()
- {
- InitializeComponent();
- }
- async void Button_Click(object sender, RoutedEventArgs e)
- {
- //Action<IZeroconfRecord> onMessage = record => Console.WriteLogLine("On Message: {0}", record);
- var domains = await ZeroconfResolver.BrowseDomainsAsync();
-
- var responses = await ZeroconfResolver.ResolveAsync(domains.Select(g => g.Key));
- // var responses = await ZeroconfResolver.ResolveAsync("_http._tcp.local.");
-
- foreach (var resp in responses)
- WriteLogLine(resp.ToString());
- }
- async void Browse_Click(object sender, RoutedEventArgs e)
- {
- var responses = await ZeroconfResolver.BrowseDomainsAsync();
-
- foreach (var service in responses)
- {
- WriteLogLine(service.Key);
- foreach (var host in service)
- WriteLogLine("\tIP: " + host);
- }
- }
- private void WriteLogLine(string text, params object[] args)
- {
- if (Log.Dispatcher.CheckAccess())
- {
- Log.AppendText(string.Format(text, args) + "\r\n");
- Log.ScrollToEnd();
- }
- else
- {
- Log.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => WriteLogLine(text, args)));
- }
- }
- private void OnAnnouncement(ServiceAnnouncement sa)
- {
- Log.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
- {
- WriteLogLine("---- Announced on {0} ({1}) ----", sa.AdapterInformation.Name, sa.AdapterInformation.Address);
- WriteLogLine(sa.Host.ToString());
- }));
- }
- private void OnWindowClosed(object sender, EventArgs e)
- {
- if (listenSubscription != null)
- {
- listenSubscription.Dispose();
- listenSubscription = null;
- }
- }
- IDisposable listenSubscription;
- IObservable<ServiceAnnouncement> subscription;
-
-
- void StartStopListener_Click(object sender, RoutedEventArgs e)
- {
- try
- {
- ListenButton.IsChecked = false;
- if (listenSubscription != null)
- {
- listenSubscription.Dispose();
- listenSubscription = null;
- }
- else
- {
- subscription = ZeroconfResolver.ListenForAnnouncementsAsync();
- listenSubscription = subscription.Subscribe(OnAnnouncement);
- }
- }
- finally
- {
- ListenButton.IsChecked = true;
- }
- }
- async void ResolveContinuous_OnClickListener_Click(object sender, RoutedEventArgs e)
- {
- try
- {
- ResolveContinuous.IsChecked = false;
- if (listenSubscription != null)
- {
- listenSubscription.Dispose();
- listenSubscription = null;
- }
- else
- {
- var domains = await ZeroconfResolver.BrowseDomainsAsync();
- var sub = ZeroconfResolver.ResolveContinuous(domains.Select(g => g.Key));
- listenSubscription = sub.Subscribe(resp => WriteLogLine(resp.ToString()));
- }
- }
- finally
- {
- ResolveContinuous.IsChecked = true;
- }
- }
- }
- }
|