2016-03-25 15 views
1

Ich versuche Mono.ZeroConf für Service-Erkennung zu verwenden. Ich kann Dienste normalerweise erkennen, aber der Port jedes Dienstes wird immer auf 0 statt auf den tatsächlichen Wert gesetzt.Mono.Zeroconf Service-Port ist immer auf 0

ich .NET 4 benutze und ZeroConf 0.9.0, hier ist mein Code:

public MainWindow() 
{ 
    serviceBrowser = new ServiceBrowser(); 
    serviceBrowser.ServiceAdded += ServiceAdded; 
    serviceBrowser.Browse(0, AddressProtocol.Any, "_http._tcp.", "local"); 
} 

private void ServiceAdded(object o, ServiceBrowseEventArgs args) 
{ 
    Console.WriteLine("*** Found name = '{0}', type = '{1}', domain = '{2}'", 
    args.Service.Name, 
    args.Service.RegType, 
    args.Service.ReplyDomain); 
    args.Service.Resolved += ServiceResolver; 

    if (args.Service.Name.Equals("MyService") && 
     args.Service.RegType.Equals("_http._tcp.")) 
    { 
     args.Service.Resolve(); 
    } 
} 

private void ServiceResolver(object o, ServiceResolvedEventArgs args) 
{ 
    IResolvableService service = o as IResolvableService; 
    Console.Write("*** Resolved name = '{0}', host ip = '{1}', hostname = {2}, 
    port = '{3}', " + "interface = '{4}', address type = '{5}'", 
    service.FullName, service.HostEntry.AddressList[0], 
    service.HostEntry.HostName, service.Port, 
    service.NetworkInterface, service.AddressProtocol); 
} 

Wenn ich MZClient 0.8.0 verwenden, um Dienste zu entdecken alle Häfen Werte wie erwartet, aber wenn ich 0.9.0, gleiche Ding passiert.

Wie kann ich den richtigen Portwert erhalten? Liegt es an einem Bug in der Version 0.9.0 oder an etwas anderem?

Antwort

1

Dies ist aufgrund eines Fehlers in Mono.Zeroconf, die in this pull request behoben ist.

Sie müssen die Bibliothek selbst erstellen, bis die Pull-Anforderung akzeptiert und das Nuget-Paket erneut veröffentlicht wird.