如何在Unity3D中实现类似于Bonjour浏览器的DNS - 服务发现

问题描述 投票:0回答:3

我想实现一个服务发现模块来获取服务广播设备的IP地址,类似于bonjour浏览器。是否可以在Unity3D(Android/iOS)中实现它?谁能指导我如何实现它。一个小例子真的很有帮助。 谢谢

编辑1:IOT设备正在广播DNS服务,我想在Unity应用程序中获取该服务以查找IOT设备的IP地址。我无法访问 IOT 设备软件或源代码。

c# unity-game-engine service-discovery bonjour dns-sd
3个回答
2
投票

您不必从头开始执行此操作。有一个名为

NetworkDiscovery
的新 Unity API 旨在简化此操作。

要查找要连接的 IP 地址,请在

NetworkDiscovery.StartAsServer()
函数中调用服务器端的
Start()

在客户端,调用

NetworkDiscovery.StartAsClient()
,然后实现
OnReceivedBroadcast(string fromAddress, string data);
函数。当找到服务器时,将调用
OnReceivedBroadcast(string fromAddress, string data);
函数,然后您可以使用返回的
fromAddress
值连接到您的服务器。

客户端连接后,可以通过调用

NetworkDiscovery.StopBroadcast()
停止广播。

如果您只是出于学习目的这样做,则只需使用 UDP 协议进行广播即可。欲了解更多信息,您可以阅读thisthis


0
投票

这是一个进行 DNS 服务发现的 iOS 插件: https://docs.unity3d.com/Manual/PluginsForIOS.html


0
投票

Unity 原生的新解决方案是 Netcode Network Discovery

它实际上不再是受支持的解决方案。只有示例代码。

编辑: 他们删除了该发现代码。这是有道理的,因为它似乎不起作用。我仍然使用 UNet,但据说有一个发现系统的参考here

© www.soinside.com 2019 - 2024. All rights reserved.