问题描述
IPAddress[] LocalIp = Dns.GetHostAddresses(Dns.GetHostName());
foreach (IPAddress iP in LocalIp)
{
if (iP.AddressFamily == AddressFamily.InterNetwork)
{
MachineIP = iP;
}
}
返回本地IP,但我需要知道设备在3G网络上的公共IP以及连接到wi-fi时的wi-fi。有人有什么建议吗?
解决方法
但我需要知道设备在 3G 网络上的公共 IP 以及连接到 wi-fi 时的 wi-fi。有人有什么建议吗?
如果您想在连接到 Wi-Fi 时获取设备的 IP 地址,您可以尝试以下代码:
首先在Form共享代码中定义接口。
public interface IPAddressManager
{
string GetIPAddress();
}
安卓平台连接wifi时获取ip地址。
[assembly: Dependency(typeof(GetAddressManager))]
namespace demo3.Droid
{
public class GetAddressManager : IPAddressManager
{
string ipAddress;
public string GetIPAddress()
{
WifiManager wifiMgr = (WifiManager)Android.App.Application.Context.GetSystemService(Context.WifiService);
WifiInfo wifiInfo = wifiMgr.ConnectionInfo;
int ip = wifiInfo.IpAddress;
ipAddress = Formatter.FormatIpAddress(ip);
return ipAddress;
}
}
}
使用 DependencyService 获取 IP 地址。
private void btn1_Clicked(object sender,EventArgs e)
{
string ip = DependencyService.Get<IPAddressManager>().GetIPAddress();
}