C# 检索设备的IP地址
我正在使用Xamarin.Android并编写了以下代码:C# 检索设备的IP地址,c#,xamarin.android,xamarin,ip-address,C#,Xamarin.android,Xamarin,Ip Address,我正在使用Xamarin.Android并编写了以下代码: public TextView text; text = FindViewById<TextView>(Resource.Id.viewIP); foreach (IPAddress adress in Dns.GetHostAddresses(Dns.GetHostName())) { text.Text = "IP Adress: " + adress; } 公共文本查看文本; text=findviewbyd
public TextView text;
text = FindViewById<TextView>(Resource.Id.viewIP);
foreach (IPAddress adress in Dns.GetHostAddresses(Dns.GetHostName()))
{
text.Text = "IP Adress: " + adress;
}
公共文本查看文本;
text=findviewbyd(Resource.Id.viewIP);
foreach(Dns.GetHostAddresses(Dns.GetHostName())中的IPAddress地址)
{
text.text=“IP地址:”+地址;
}
但是,当我打开应用程序时,它会立即关闭。我是否使用正确的方式获取设备的IP地址?从
添加到mainifest:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
请参阅以下答案:对于我来说,这在PCL Xamarin中起到了作用:
public static string GetIPAddress()
{
var AllNetworkInterfaces = Collections.List(Java.Net.NetworkInterface.NetworkInterfaces);
var IPAddres = "";
foreach (var interfaces in AllNetworkInterfaces)
{
if (!(interfaces as Java.Net.NetworkInterface).Name.Contains("eth0")) continue;
var AddressInterface = (interfaces as Java.Net.NetworkInterface).InterfaceAddresses;
foreach (var AInterface in AddressInterface)
{
if(AInterface.Broadcast != null)
IPAddres = AInterface.Address.HostAddress;
}
}
return IPAddres;
}
我看到的关于这个问题的所有答案都只得到了我在家庭网络(198.162.#.#)上的设备的内部IP地址。所以我采取了一种稍微不同的方法,更直接地询问互联网。org有一个很好且简单的端点来获取您的IP地址,可以在共享代码中执行。例如
var client = new HttpClient();
var response = await client.GetAsync("https://api.ipify.org/?format=json");
var resultString = await response.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<IpResult>(resultString);
var yourIp = result.Ip;
var-client=new-HttpClient();
var response=wait client.GetAsync(“https://api.ipify.org/?format=json");
var resultString=await response.Content.ReadAsStringAsync();
var result=JsonConvert.DeserializeObject(resultString);
var yourIp=result.Ip;
其中“IpResult”是一个POCO,具有一个名为“Ip”的字符串属性(除此代码外,还需要创建该属性)。你真的想因此引发异常吗?提示-你没有。
public static string GetIPAddress()
{
var AllNetworkInterfaces = Collections.List(Java.Net.NetworkInterface.NetworkInterfaces);
var IPAddres = "";
foreach (var interfaces in AllNetworkInterfaces)
{
if (!(interfaces as Java.Net.NetworkInterface).Name.Contains("eth0")) continue;
var AddressInterface = (interfaces as Java.Net.NetworkInterface).InterfaceAddresses;
foreach (var AInterface in AddressInterface)
{
if(AInterface.Broadcast != null)
IPAddres = AInterface.Address.HostAddress;
}
}
return IPAddres;
}
var client = new HttpClient();
var response = await client.GetAsync("https://api.ipify.org/?format=json");
var resultString = await response.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<IpResult>(resultString);
var yourIp = result.Ip;