Mono 如何用一个单调的地址来解决一个地址?
我目前正在开发一款iPad应用程序。我想让它通过WCF和BonJour上的discovery与Windows c应用程序通信 我已经使用Mono.ZeroConf库制作了windows/c部分,并测试了它在windows上的工作情况 现在,当我尝试让我的MonoTouch应用程序发现Windows应用程序时,一切都很顺利,直到我需要解析地址为止。我就是搞不清楚到底出了什么问题 我的iPad应用程序中有以下代码Mono 如何用一个单调的地址来解决一个地址?,mono,xamarin.ios,Mono,Xamarin.ios,我目前正在开发一款iPad应用程序。我想让它通过WCF和BonJour上的discovery与Windows c应用程序通信 我已经使用Mono.ZeroConf库制作了windows/c部分,并测试了它在windows上的工作情况 现在,当我尝试让我的MonoTouch应用程序发现Windows应用程序时,一切都很顺利,直到我需要解析地址为止。我就是搞不清楚到底出了什么问题 我的iPad应用程序中有以下代码 NSNetServiceBrowser browser = new NSNetServ
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");
所以我的问题是,我应该如何处理Addresses数组中的NSData对象来正确解析它们
我试过搜索,但似乎找不出答案
已解析服务的所有其他属性都是正确的,如名称、端口等
我希望你们中的一些人来过这里,能给我一个答案
致意
/Anders您收到的地址中的数据是NSArray中的NSData。委托本身的描述称它是一个sockaddr对象的集合。所以肯定不是Int64,而是指向sockaddr对象的指针 在机器翻译中的方式有点不同。您收到了NSNetService的委托,现在您必须等待服务解析地址,这是由另一个解析完成的
我通常存储由NSNetServiceBrowser委托返回的NSNetService,然后等待地址被解析。一旦解析完成,我就可以使用该服务了,因为它已经初始化,我不关心地址本身。要弄清楚这一切。我想使用nsnetservice的地址作为WCF服务的参数。为此,我想使用IP,但当然可以尝试使用NSNetService对象的DNS名称。我想这就是你的建议。或者你说我使用服务是什么意思,因为它已经初始化,我不关心地址本身。当调用AddressResolved委托时,实际的NSService就可以使用了。我使用主机名和端口属性为NSUrlConnection和NSUrlRequest创建NSUrl。事实上,我已经采取了另一种方法,并放弃了“你好发现”,因为我的服务已经转移到了一个网站,而不是托管在一个应用程序中。不过还是要谢谢你的帮助。