我正在考虑为Android (客户端)和服务器(Windows)制作一个客户端/服务器应用程序。
该应用程序的用途是从服务器(PC),它允许用户扫描网络中与我的C#应用程序兼容的设备,然后可以向客户端和服务器发送消息或从客户端和服务器发送消息。
我一直在阅读安卓的文档,并在http://developer.android.com/training/connect-devices-wirelessly/nsd.html上找到了安卓的网络发现服务。
我对此的理解是,android应用程序会发送一条广播消息,其中包含服务名称、IP和端口号,其他设备可以通过这些信息连接到它。因此,在我的例子中,C#将接收该广播消息,并决定我的C#应用程序是否可以支持该服务,如果可以,则使用广播中的详细信息建立到android设备的套接字连接。
正如我所说的,我已经找到了注册服务的android开发者教程,但我找不到任何关于C#如何找到这条广播消息并对其采取行动的内容。
任何帮助或教程,你可能会很好,因为谷歌没有找到我的任何东西,我不完全确定我是否正在搜索正确的东西。
谢谢
发布于 2014-06-16 22:43:22
@greenapps是对的,服务器应该广播。因此,使用网络服务发现来discover a service您的C#服务正在广播的内容。
Android的NsdManager类有一个这样做的教程。它使用“基于DNS的服务发现”,官方规范列出了here。我相信这是DNS服务发现(DNS-SD)标准。
你的服务器将不得不广播。您应该能够使用this question来实现这一点,它涵盖了DNS SRV,这是DNS-SDs基础之一。
当然,C#广播服务类型必须与Android代码中的SERVICE_TYPE字符串参数匹配:
mNsdManager.discoverServices(
SERVICE_TYPE, NsdManager.PROTOCOL_DNS_SD, mDiscoveryListener);发布于 2014-06-16 22:57:25
这可能会有帮助:http://justanapplication.wordpress.com/2013/11/20/service-discovery-in-android-and-ios-part-eight-ios-take-four/
我使用过一次,前几个页面列出了如何从android应用程序内部的DNS发现服务接收回调,就像greenapps所建议的那样。虽然这可能不是您正在使用的确切方法,因为您的方法只找到兼容的设备;但这至少可能是一个起点。
https://stackoverflow.com/questions/24188803
复制相似问题