C# 在Bonjour 1.0中调用GetAddrInfo(..)时的主机名是什么

C# 在Bonjour 1.0中调用GetAddrInfo(..)时的主机名是什么,c#,.net,bonjour,C#,.net,Bonjour,我使用Bonjour 1.0(.NET)扫描了我的本地家庭网络,以获得regtype=“\u http.\u tcp”: 当我找到服务时,调用方法:static void eventManager\u ServiceFound(DNSSDService浏览器、DNSSDFlags标志、uint ifIndex、字符串serviceName、字符串regtype、字符串domain) 然后在该方法中,我想使用方法:DNSSDService GetAddrInfo(DNSSDFlags-glags

我使用
Bonjour 1.0
(.NET)扫描了我的本地家庭网络,以获得
regtype=“\u http.\u tcp”

当我找到服务时,调用方法:
static void eventManager\u ServiceFound(DNSSDService浏览器、DNSSDFlags标志、uint ifIndex、字符串serviceName、字符串regtype、字符串domain)

然后在该方法中,我想使用方法:
DNSSDService GetAddrInfo(DNSSDFlags-glags,uint-ifIndex,DNSSDAddressFamily-addressFamily,
字符串主机名
,DNSSDEventManager-eventManager)
来了解服务的ip地址和端口

问题是我不知道字符串主机名应该是什么,因此我没有得到任何结果:*请查看:???这里是什么??在代码中**

 static void eventManager_ServiceFound(DNSSDService browser, DNSSDFlags flags, uint ifIndex, string serviceName, string regtype, string domain) {
            Console.WriteLine("browser: " + browser + "\nDNSSDFlags " +  flags+ "\nifIndex " + ifIndex +"\nserviceName: " + serviceName + "\nregtype: " +regtype+ "\ndomain: "+ domain);
            DNSSDEventManager eventManager = new DNSSDEventManager();
            eventManager.AddressFound += new _IDNSSDEvents_AddressFoundEventHandler(eventManager_AddressFound);
            DNSSDAddressFamily family = new DNSSDAddressFamily();
            browser.GetAddrInfo(flags, ifIndex, family, ???WHAT HERE???, eventManager);
        }

        private static void eventManager_AddressFound(DNSSDService service, DNSSDFlags flags, uint ifIndex, string hostname, DNSSDAddressFamily addressFamily, string address, uint ttl) {
            Console.WriteLine("----------------------------------------");
            Console.WriteLine("FOUND THE ADDRESS");
            Console.WriteLine("----------------------------------------");
        }
输出:

browser: System.__ComObject
DNSSDFlags 2
ifIndex 32
serviceName: AXIS M1011-W - 00408CBEEAE5
regtype: _http._tcp.
domain: local.
完整代码:

using Bonjour;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace WindowsFormsApplication1 {
    static class Program {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main() {
            DNSSDService service = new DNSSDService();
            DNSSDEventManager eventManager = new DNSSDEventManager();
            eventManager.ServiceFound += new _IDNSSDEvents_ServiceFoundEventHandler(eventManager_ServiceFound);
         //   DNSSDService browse = service.Browse(0, 0, "_axis-video._tcp", null, eventManager);
            DNSSDService browse = service.Browse(0, 0, "_http._tcp", null, eventManager);


            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
        static void eventManager_ServiceFound(DNSSDService browser, DNSSDFlags flags, uint ifIndex, string serviceName, string regtype, string domain) {
            Console.WriteLine("browser: " + browser + "\nDNSSDFlags " +  flags+ "\nifIndex " + ifIndex +"\nserviceName: " + serviceName + "\nregtype: " +regtype+ "\ndomain: "+ domain);
            DNSSDEventManager eventManager = new DNSSDEventManager();
            eventManager.AddressFound += new _IDNSSDEvents_AddressFoundEventHandler(eventManager_AddressFound);
            DNSSDAddressFamily family = new DNSSDAddressFamily();
            browser.GetAddrInfo(flags, ifIndex, family, ?????WHAT HERE?????, eventManager);
        }

        private static void eventManager_AddressFound(DNSSDService service, DNSSDFlags flags, uint ifIndex, string hostname, DNSSDAddressFamily addressFamily, string address, uint ttl) {
            Console.WriteLine("----------------------------------------");
            Console.WriteLine("FOUND ADDRESS");
            Console.WriteLine("----------------------------------------");
        }



    }
}
使用“你好”;
使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用System.Windows.Forms;
命名空间Windows窗体应用程序1{
静态类程序{
/// 
///应用程序的主要入口点。
/// 
[状态线程]
静态void Main(){
DNSSDService服务=新的DNSSDService();
DNSSDEventManager事件管理器=新建DNSSDEventManager();
eventManager.ServiceFound+=新的_IDNSSDEvents_ServiceFoundEventHandler(eventManager_ServiceFound);
//DNSSDService browse=service.browse(0,0,“\u axis-video.\u-tcp”,null,eventManager);
DNSSDService browse=service.browse(0,0,“\u http.\u tcp”,null,eventManager);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(新Form1());
}
静态void eventManager_ServiceFound(DNSSDService浏览器、DNSSDFlags标志、uint ifIndex、字符串serviceName、字符串regtype、字符串域){
Console.WriteLine(“浏览器:“+browser+”\nDNSSDFlags”+flags+“\nifIndex”+ifIndex+”\n服务名称:“+serviceName+”\nregtype:“+regtype+”\ndomain:“+domain”);
DNSSDEventManager事件管理器=新建DNSSDEventManager();
eventManager.AddressFound+=新的_IDNSSDEvents_AddressFoundEventHandler(eventManager_AddressFound);
DNSSDAddressFamily=新的DNSSDAddressFamily();
GetAddrInfo(标志、ifIndex、系列、这里是什么、eventManager);
}
私有静态void eventManager_AddressFound(DNSSDService服务、DNSSDFlags标志、uint ifIndex、字符串主机名、DNSSDADRessFamily addressFamily、字符串地址、uint ttl){
Console.WriteLine(“---------------------------------------------------”;
控制台写入线(“找到的地址”);
Console.WriteLine(“---------------------------------------------------”;
}
}
}

我首先要检查的是与_http.\u tcp记录关联的TXT记录。从屏幕截图中,您选择了_axis-video._tcp,并显示与之相关的macaddress。许多\u http.\u tcp条目记录访问它所需的url或所需的端口/IP地址。我会先研究一下


否则,您可能必须将macaddress解析为ipaddress。我在谷歌上搜索并附带了

现在我可以将mac地址解析为ip地址,但您发布的内容似乎更简单(我使用的是:)。我会检查的。但是我不知道如何找到这个TXT记录。
using Bonjour;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace WindowsFormsApplication1 {
    static class Program {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main() {
            DNSSDService service = new DNSSDService();
            DNSSDEventManager eventManager = new DNSSDEventManager();
            eventManager.ServiceFound += new _IDNSSDEvents_ServiceFoundEventHandler(eventManager_ServiceFound);
         //   DNSSDService browse = service.Browse(0, 0, "_axis-video._tcp", null, eventManager);
            DNSSDService browse = service.Browse(0, 0, "_http._tcp", null, eventManager);


            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
        static void eventManager_ServiceFound(DNSSDService browser, DNSSDFlags flags, uint ifIndex, string serviceName, string regtype, string domain) {
            Console.WriteLine("browser: " + browser + "\nDNSSDFlags " +  flags+ "\nifIndex " + ifIndex +"\nserviceName: " + serviceName + "\nregtype: " +regtype+ "\ndomain: "+ domain);
            DNSSDEventManager eventManager = new DNSSDEventManager();
            eventManager.AddressFound += new _IDNSSDEvents_AddressFoundEventHandler(eventManager_AddressFound);
            DNSSDAddressFamily family = new DNSSDAddressFamily();
            browser.GetAddrInfo(flags, ifIndex, family, ?????WHAT HERE?????, eventManager);
        }

        private static void eventManager_AddressFound(DNSSDService service, DNSSDFlags flags, uint ifIndex, string hostname, DNSSDAddressFamily addressFamily, string address, uint ttl) {
            Console.WriteLine("----------------------------------------");
            Console.WriteLine("FOUND ADDRESS");
            Console.WriteLine("----------------------------------------");
        }



    }
}