网络服务发现

我正在寻找为Android(客户端)和服务器(Windows)制作客户端/服务器应用程序。

该应用程序的目的是从服务器(PC),它允许用户扫描网络以查找与我的C#应用​​程序兼容的设备,然后可以向客户端和服务器发送消息。

我一直在阅读Android文档,并在http://developer.android.com/training/connect-devices-wirelessly/nsd.html上找到了android中的网络发现服务。

我对它的工作原理的理解是,android应用程序发送一个广播消息,其中包含其他设备可以通过它连接的服务名称,IP和端口号。 因此,在我的情况下,C#将接收此广播消息并决定该服务是否是我的C#应用​​程序可以支持的内容,如果是,则建立与Android设备的套接字连接以及来自广播的详细信息。

正如我所说,我已经找到了用于注册服务的android开发人员教程,但是我找不到任何关于C#如何找到这个广播消息并采取行动的方法。

你可能拥有的任何帮助或教程都会很棒,因为Google没有找到任何东西,我不完全确定我是否正在寻找正确的东西。

谢谢

@greenapps是对的,服务器应该广播。 因此,使用网络服务发现来发现您的C#服务正在广播的服务。

Android的NsdManager类有一个教程来执行此操作。 它使用“基于DNS的服务发现”,其中列出了官方规范。 我相信这是DNS服务发现(DNS-SD)标准。

您的服务器必须广播。 您应该能够使用这个问题来解决这个问题 ,其中包括DNS-SD基础之一DNS SRV。

当然,C#广播服务类型必须与Android代码中的SERVICE_TYPE字符串参数匹配:

mNsdManager.discoverServices( SERVICE_TYPE, NsdManager.PROTOCOL_DNS_SD, mDiscoveryListener); 

这可能会有所帮助: http : //justanapplication.wordpress.com/2013/11/20/service-discovery-in-android-and-ios-part-eight-ios-take-four/

我用了一次,前几页列出了如何从Android应用程序内的DNS发现服务接收回调,就像greenapps建议的那样。 虽然它可能不是您使用的确切方法,因为您的方法只能找到兼容的设备; 这至少可能是一个起点。