2016-03-25 1 views
1

Я пытаюсь использовать Mono.ZeroConf для обнаружения службы. Я могу нормально открывать службы, но порт каждой службы всегда равен 0 вместо фактического значения.Сервисный порт Mono.Zeroconf всегда установлен в 0

Я использую .NET 4 и ZeroConf 0.9.0, вот мой код:

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); 
} 

Когда я использую MZClient 0.8.0 для обнаружения сервисов все порты значения являются, как ожидалось, но когда я использую 0.9.0, то же самое предмет бывает.

Как я могу получить правильное значение порта? Это связано с некоторой ошибкой в ​​версии 0.9.0 или чем-то еще?

ответ

1

Это связано с ошибкой в ​​Mono.Zeroconf, которая исправлена ​​в this pull request.

Вам нужно будет создать библиотеку самостоятельно до тех пор, пока не будет принят запрос на перенос, и пакет Nuget будет опубликован снова.

Смежные вопросы