2014-01-11 20 views
1

我通過使用Bonjour 1.0(.NET)爲服務我的本地家庭網絡掃描,regtype = "_http._tcp"什麼是主機名,而在卓悅調用的getaddrinfo(....)1.0

enter image description here

DNSSDService service = new DNSSDService(); 
      DNSSDEventManager eventManager = new DNSSDEventManager(); 
      eventManager.ServiceFound += new _IDNSSDEvents_ServiceFoundEventHandler(eventManager_ServiceFound); 
      DNSSDService browse = service.Browse(0, 0, "_http._tcp", null, eventManager); 

當我發現服務的方法:調用static void eventManager_ServiceFound(DNSSDService browser, DNSSDFlags flags, uint ifIndex, string serviceName, string regtype, string domain)

然後在那個方法我想使用方法:DNSSDService GetAddrInfo(DNSSDFlags glags, uint ifIndex, DNSSDAddressFamily addressFamily,string hostname, DNSSDEventManager eventManager)結識服務的IP地址和端口。

問題是,我不知道知道string hostname應該是什麼,因此我沒有得到任何結果:**請看:WHAT ??? ?? HERE在代碼**

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



    } 
} 
+0

任何幫助。請。 – Yoda

回答

1

的東西,我會先檢查與_http._tcp相關的TXT記錄記錄。從屏幕截圖中選擇_axis-video._tcp,並向您顯示與之關聯的macaddress。許多_http._tcp條目記錄到達它所需的url,或所需的端口/ ip地址。我會先深入研究。

否則,您可能必須將macaddress解析爲ip地址。我GOOGLE搜索並與http://www.mostthingsweb.com/2011/11/reading-arp-entries-with-c/

+0

現在我可以將mac地址解析爲ip地址,但您發佈的內容似乎更容易(這是我使用的:http://www.codeproject.com/Tips/358946/Retrieving-IP-and-MAC-addresses-對於-A-LAN)。我會查一下。但我不知道如何得到這個TXT記錄。 – Yoda