网络服务发现

时间:2014-06-12 15:55:21

标签: c# android sockets

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

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

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

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

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

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

由于

2 个答案:

答案 0 :(得分:2)

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

Android'} NsdManager课程有一个教程。它使用"基于DNS的服务发现",并列出官方规范here。我相信这是DNS服务发现(DNS-SD)标准。

您的服务器必须广播。您应该能够使用this question执行此操作,其中包括DNS-SD,DNS-SD基础之一。

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

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

答案 1 :(得分:0)

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

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