【问题标题】:HttpListner discoveryHttp Listener 发现
【发布时间】: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


【解决方案1】:

我使用 ZeroConf 作为实现多播客户端的灵感来源,现在一切顺利。最重要的是选择适合您网络的正确 IP 地址进行多播。请参阅此表 (https://en.wikipedia.org/wiki/Multicast_address)。 广播到 255.255.255.255 不是必需的行为,也不会被路由。

【讨论】:

    猜你喜欢
    • 2011-12-07
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-28
    相关资源
    最近更新 更多