Mirror框架下安卓端显示游戏连接IP及跨安卓连接问题排查
问题分析与解决方案
核心问题
你的代码通过Dns.GetHostEntry(Dns.GetHostName())获取本地IP,但安卓设备通常存在多个网络接口(如WiFi、移动数据、虚拟VPN接口等),这段代码会返回第一个匹配的IPv4地址,大概率不是WiFi网络的IP,导致其他安卓设备无法通过该IP连接到安卓主机。
修复方案
替换原有的GetLocalIPAddress方法,改为专门获取WiFi接口的IPv4地址:
using System.Net.NetworkInformation; using System.Net.Sockets; string GetWiFiLocalIPAddress() { foreach (var networkInterface in NetworkInterface.GetAllNetworkInterfaces()) { // 筛选出启用状态的WiFi接口 if (networkInterface.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 && networkInterface.OperationalStatus == OperationalStatus.Up) { foreach (var unicastAddress in networkInterface.GetIPProperties().UnicastAddresses) { // 返回非回环的IPv4地址 if (unicastAddress.Address.AddressFamily == AddressFamily.InterNetwork && !IPAddress.IsLoopback(unicastAddress.Address)) { return unicastAddress.Address.ToString(); } } } } throw new Exception("No active WiFi network adapter with an IPv4 address found!"); }
额外注意事项
- 安卓平台需添加权限:在
AndroidManifest.xml中确保包含<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />和<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> - 确认两台安卓设备处于同一WiFi网络,且路由器未开启设备隔离功能
内容的提问来源于stack exchange,提问作者Pedro _F.M
相关产品推荐
相关产品推荐

