我目前正在开发一个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