Skip to content

Instantly share code, notes, and snippets.

@sjvanrossum
Created September 20, 2011 14:16
Show Gist options
  • Save sjvanrossum/1229183 to your computer and use it in GitHub Desktop.
Save sjvanrossum/1229183 to your computer and use it in GitHub Desktop.
Mono.Zeroconf Testcase.
using System;
using System.Net;
using System.Threading;
using Mono.Zeroconf;
namespace ZeroconfTest
{
class MainClass
{
static ManualResetEvent mre = new ManualResetEvent(false);
const string serviceName = "ZeroConfTest";
public static void Main(string[] args)
{
RegisterService registrar = new RegisterService();
registrar.Name = serviceName;
registrar.RegType = "_http._tcp";
registrar.UPort = (ushort)80;
registrar.Response += HandleRegistrarResponse;
registrar.Register();
mre.WaitOne();
}
static void HandleRegistrarResponse(object o, RegisterServiceEventArgs args)
{
if (args.IsRegistered)
{
Console.WriteLine("Service registered at port {0}.", (ushort)args.Service.Port);
ServiceBrowser browser = new ServiceBrowser();
browser.ServiceAdded += HandleBrowserServiceAdded;
browser.Browse("_http._tcp", null);
}
else
{
mre.Set();
}
}
static void HandleBrowserServiceAdded(object o, ServiceBrowseEventArgs args)
{
if (args.Service.Name == serviceName)
{
args.Service.Resolved += HandleArgsServiceResolved;
args.Service.Resolve();
}
}
static void HandleArgsServiceResolved(object o, ServiceResolvedEventArgs args)
{
// The "this.port = (ushort)IPAddress.NetworkToHostOrder((short)port);" fix I made in BrowseService.cs is essentially the same as the manual fix below.
Console.WriteLine("Resolved port as {0}, without NetworkToHostOrder.\nResolved port as {1}, with NetworkToHostOrder.", (ushort)args.Service.Port, (ushort)IPAddress.NetworkToHostOrder(args.Service.Port));
mre.Set();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment