Mono 如何用一个单调的地址来解决一个地址?

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

我目前正在开发一款iPad应用程序。我想让它通过WCF和BonJour上的discovery与Windows c应用程序通信

我已经使用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");
所以我的问题是,我应该如何处理Addresses数组中的NSData对象来正确解析它们

我试过搜索,但似乎找不出答案

已解析服务的所有其他属性都是正确的,如名称、端口等

我希望你们中的一些人来过这里,能给我一个答案

致意
/Anders

您收到的地址中的数据是NSArray中的NSData。委托本身的描述称它是一个sockaddr对象的集合。所以肯定不是Int64,而是指向sockaddr对象的指针

在机器翻译中的方式有点不同。您收到了NSNetService的委托,现在您必须等待服务解析地址,这是由另一个解析完成的


我通常存储由NSNetServiceBrowser委托返回的NSNetService,然后等待地址被解析。一旦解析完成,我就可以使用该服务了,因为它已经初始化,我不关心地址本身。

要弄清楚这一切。我想使用nsnetservice的地址作为WCF服务的参数。为此,我想使用IP,但当然可以尝试使用NSNetService对象的DNS名称。我想这就是你的建议。或者你说我使用服务是什么意思,因为它已经初始化,我不关心地址本身。当调用AddressResolved委托时,实际的NSService就可以使用了。我使用主机名和端口属性为NSUrlConnection和NSUrlRequest创建NSUrl。事实上,我已经采取了另一种方法,并放弃了“你好发现”,因为我的服务已经转移到了一个网站,而不是托管在一个应用程序中。不过还是要谢谢你的帮助。