【发布时间】:2019-11-15 23:56:20
【问题描述】:
我正在 Xamain 上开发一个系统,每个设备都可以通过 HttpListner 创建网络服务,然后开始列出来自同一 LAN 网络上其他设备的传入呼叫。创建列表器后,我们可以在 URI 中应用命名约定,以便其他设备可以过滤掉不相关的服务。
问题有没有办法发现同一局域网下所有具有给定服务前缀的主机(ip+port)?
我可以通过 NdsManager 类使用适用于 Android 的设备特定代码然后调用 DiscoveringPeers() 来做到这一点,但我在想为什么在 .Net 中不可能有等效的功能?
【问题讨论】:
-
假设本地局域网,您可以使用
UdpClient并使每个设备成为客户端和服务器,每个客户端使用“消息”广播到 255.255.255.255,每个“服务器”接收“消息”(假设它包含 URI 过滤器、端口、..),因此每个服务器都知道来自IPEndPoint响应的客户端的 IP 地址、“客户端”HttpListener 所在的端口等......只是 Google|Bing ”。使用 udp 进行网络广播发现”,你会发现很多例子,Github 上有一些库可以帮助自动化所有这些。 -
ZeroConf 不是自己发明轮子,而是基于 Apple 的 Bonjour 和跨平台工作,github.com/onovotny/Zeroconf
-
ZeroConf 是 Github 上的其中之一,它是 mDNS/Bonjour 上另一个基于 UdpClient 的实现
标签: xamarin self-hosting httplistener