首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网络服务发现

网络服务发现
EN

Stack Overflow用户
提问于 2014-06-12 23:55:21
回答 2查看 4.2K关注 0票数 4

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

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

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

我对此的理解是,android应用程序会发送一条广播消息,其中包含服务名称、IP和端口号,其他设备可以通过这些信息连接到它。因此,在我的例子中,C#将接收该广播消息,并决定我的C#应用程序是否可以支持该服务,如果可以,则使用广播中的详细信息建立到android设备的套接字连接。

正如我所说的,我已经找到了注册服务的android开发者教程,但我找不到任何关于C#如何找到这条广播消息并对其采取行动的内容。

任何帮助或教程,你可能会很好,因为谷歌没有找到我的任何东西,我不完全确定我是否正在搜索正确的东西。

谢谢

EN

回答 2

Stack Overflow用户

发布于 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字符串参数匹配:

代码语言:javascript
复制
mNsdManager.discoverServices(
    SERVICE_TYPE, NsdManager.PROTOCOL_DNS_SD, mDiscoveryListener);
票数 2
EN

Stack Overflow用户

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24188803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档