Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检索设备的IP地址_C#_Xamarin.android_Xamarin_Ip Address - Fatal编程技术网

C# 检索设备的IP地址

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

我正在使用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(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;