gpt4 book ai didi

c# - 如何在 C# 中使用 Unity UNET 获取本地网络中所有设备的 IP 地址?

转载 作者:行者123 更新时间:2023-11-30 20:35:24 28 4
gpt4 key购买 nike

大家好!

我在一个本地网络中有很多设备。我怎样才能获得所有这些设备的 IP 地址?

我想做这样的事情:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class Tools : MonoBehaviour {

//get local ip address
public string getIP() {

string IP = "";

IP = Network.player.ipAddress;

return IP;
}

//get all ip addresses in local network
public List<string> getIPArray() {

List<string> listIP = new List<string>();


return listIP;
}
}

最佳答案

有两种方法:

1.UDP

这是一个漫长的过程,但可以通过 UDP 完成。

1。首先要做的是获取您的本地 IP 地址。如果您的本地 ip 是 192.168.1.13,则必须取出最后一个八位字节 13 并将其替换为 255

2。在所有游戏中启动 UDP 服务器,并使用您想要的任何端口收听 IPAddress.Any。建议使用 >=9000 的端口。以下端口通常被其他一些应用程序使用。如果从客户那里收到任何东西,请将一些东西发回给客户,让客户知道您有空。

3。要搜索游戏,请创建一个 UDP 客户端并从以 255 结尾的 #1 向该 IP 地址发送内容,然后听听IPAddress.Any 是否有响应。如果从任何服务器收到响应/消息,则将收到消息的 IP 存储到数组或 List

4。然后您可以使用来自#3 的那些存储的 IP 来查找您网络上的所有可用设备。

Here是一个工作示例。

不利的一面是,如果您拥有免费版本的 Unity,它将无法工作。有一项限制要求您拥有 Unity Pro 才能使用来自 C# 的任何原始套接字 API Unity 5 及更高版本不再适用。现在无需专业版许可即可在 Unity 5 及更高版本中使用。


2.NetworkDiscovery

好消息是 Unity 在 5.3 左右的版本中让您更容易做到这一点。我不记得是什么版本,但请确保拥有最新版本。您无需使用 Unity Pro 即可工作。

您可以使用 NetworkDiscovery要做的课this在新版本的 Unity 中。只需调用 NetworkDiscovery.StartAsServer() 即可向客户端广播消息。在客户端,您可以通过调用 NetworkDiscovery.StartAsClient() 收听广播。您可以使用 OnReceivedBroadcast(string fromAddress, string data); 来查看您是从哪个设备接收到的。再简单不过了。

关于c# - 如何在 C# 中使用 Unity UNET 获取本地网络中所有设备的 IP 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37951902/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com