繁体   English   中英

网络服务发现

[英]Network Service Discovery

我正在寻找为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 SRV(DNS-SD基础之一)。

当然,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建议的那样。 虽然它可能不是您使用的确切方法,因为您的方法只能找到兼容的设备; 这至少可能是一个起点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM