我目前正在開發一個iPad應用程序。我希望這與使用WCF的Windows c#應用程序進行通信,並通過BonJour進行發現。如何使用MonoTouch.Foundation.NSNetService解析地址?
我已經使用Mono.ZeroConf庫製作了windows/c#部分,並測試了它在Windows上的工作原理。
現在,當我嘗試讓我的MonoTouch應用程序發現Windows應用程序時,一切正常,直到我需要解析地址。我根本無法弄清楚什麼是錯的。
我在我的iPad應用程序中有以下代碼。
NSNetServiceBrowser browser = new NSNetServiceBrowser();
browser.FoundService += delegate(object sender, NSNetServiceEventArgs e){
e.Service.AddressResolved += delegate(object service, EventArgs e1){
//No matter how I treat the Bytes here it resolves to me as 8.135.207.208
//When it was supposed to resolve to some 172.x.x.x ip.
long address = ((NSNetService)service).Addresses[0].Bytes.ToInt64();
};
e.Service.Resolve();
};
browser.SearchForServices("_myService._tcp", "local");
所以我的問題是,我該如何對待地址數組中的NSData對象來解決它們的問題。
我試過尋找,但似乎無法弄清楚。
的解決服務的所有其他屬性是正確的,如姓名,端口等
我希望你們中的一些已經在這裏,並能提供我一個答案。
問候 /安德斯
爲了得到這一切。我想使用nsnetservice的地址作爲WCF服務的參數。爲此,我想使用IP,但可以嘗試使用NSNetService對象的DNS名稱。我想這就是你的建議。或者,「我使用服務,因爲它已經初始化,我不在意地址本身」。 – ankhansen 2011-05-10 08:58:26
當AddressResolved委託被調用時,實際的NSService已準備好使用。 然後,我使用HostName和Port屬性爲NSUrlConnection和NSUrlRequest創建NSUrl。 – 2011-05-10 09:42:57
好吧,我會期待這個工作。實際上,我採取了另一種方法,並且由於我的服務移動到網站而不是託管在應用程序中,因此放棄了Bonjour發現。但是,無論如何感謝您的幫助。 – ankhansen 2011-06-08 06:52:38