借助人工智能进行工作和学习,变得越来越重要。这是一个需要不断摸索,积累,练习的成长过程。
我通过一系列的帖子来记录详细的过程,可以发现:
- 如何通过与人工智能的交互激发自己的思考
- 通过人工智能给出的信息调动自己动手实践
- 从一个切入点展开各种靠单纯学习知识或课程关注不到的实战问题
- 思考问题,自主学习能力的提升
- 更自由更接近知识与应用本质的学习过程
⛳切入点,Unity获取本机真实IP的过程
以下粗标题都是向chat提问的问法
Unity客户端如何获取本机ip
在Unity中,你可以使用System.Net命名空间中的Dns和IPAddress类来获取本机的IP地址。以下是一个简单的示例:
using System;
using System.Net;
using UnityEngine;
public class IPExample : MonoBehaviour
{
void Start()
{
string localIPAddress = GetLocalIPAddress();
Debug.Log("Local IP Address: " + localIPAddress);
}
string GetLocalIPAddress()
{
string localIP = "127.0.0.1"; // 默认为本地回环地址
try
{
// 获取主机名
string hostName = Dns.GetHostName();
// 根据主机名获取IP地址列表
IPAddress[] addresses = Dns.GetHostAddresses(hostName);
// 找到一个IPv4地址(忽略IPv6)
foreach (IPAddress address in addresses)
{
if (address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
localIP = address.ToString();
break;
}
}
}
catch (Exception e)
{
Debug.LogError("Error getting local IP address: " + e.Message);
}
return localIP;
}
}
这个示例首先获取主机名,然后使用Dns.GetHostAddresses获取主机的所有IP地址。接着,它循环遍历IP地址列表,找到第一个IPv4地址(AddressFamily.InterNetwork),并返回该地址作为本地IP地址。
请注意,这可能返回本地回环地址(127.0.0.1),这是因为在某些情况下,主机名可能没有映射到具有外部访问权限的IP地址。在实际发布应用程序时,你可能需要更复杂的网络检测逻辑。
如何获取本机的真实ip
在Unity中获取本机的真实公共IP地址是相对复杂的,因为Unity是一种游戏开发引擎,通常不提供直接的API来获取本机的公共IP地址。获取公共IP地址通常需要通过网络请求到一个外部的服务。
以下是一种获取本机公共IP地址的方法,使用一个外部的HTTP请求服务。请注意,这样的方法依赖于外部服务的可用性,并且需要网络连接。在生产环境中,你可能需要使用更为可靠的方式,例如在服务器端进行IP地址的记录。
using UnityEngine;
using System;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
public class PublicIPExample : MonoBehaviour
{
async void Start()
{
string publicIPAddress = await GetPublicIPAddress();
Debug.Log("Public IP Address: " + publicIPAddress);
}
async Task<string> GetPublicIPAddress()
{
try
{
using (HttpClient httpClient = new HttpClient())
{
// 使用一个公共IP地址查询服务
string response = await httpClient.GetStringAsync("https://api64.ipify.org?format=json");
// 解析JSON响应,提取公共IP地址
IPAddress ipAddress = IPAddress.Parse(JsonUtility.FromJson<IPResponse>(response).ip);
return ipAddress.ToString();
}
}
catch (Exception e)
{
Debug.LogError("Error getting public IP address: " + e.Message);
return "Error";
}
}
[Serializable]
private class IPResponse
{
public string ip;
}
}
上述示例使用了 https://api64.ipify.org 这个公共IP地址查询服务。在实际应用中,你可能需要选择其他可靠的服务,或者在自己的服务器上设置一个服务来提供公共IP地址。
请注意,这种方法依赖于外部服务的可用性,而且可能存在网络延迟。在实际应用中,你可能需要在网络不可用或服务不可用时提供一个备用方案。
unity测试项目: