using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.Net.Wifi;
using System.Net;
using Java.Net;
using Android.Net;
namespace Shared.Net
{
public class NetWiFi
{
public string GetIPAddress()
{
string ipAddress = "127.0.0.1";
try
{
var wifimanage = (WifiManager)Application.Activity.BaseContext.GetSystemService(Context.WifiService);//»ñÈ¡WifiManager
var wifiinfo = wifimanage.ConnectionInfo;
if (wifiinfo.IpAddress == 0)
{
var networkInterfaces = NetworkInterface.NetworkInterfaces;
while (networkInterfaces.HasMoreElements)
{
var ha = (networkInterfaces.NextElement() as NetworkInterface).InetAddresses;
while (ha.HasMoreElements)
{
var t = (ha.NextElement() as InetAddress);
if (!t.IsLoopbackAddress && t.GetType() == typeof(Inet4Address))
{
return t.HostAddress;
}
}
}
}
else
{
ipAddress = intToIp(wifiinfo.IpAddress);
}
}catch(Exception e){
}
return ipAddress;
//return MyJar.Common.GetIpAddress(Shared.Application.Activity);
}
string intToIp(int i)
{
return (i & 0xFF) + "." + ((i >> 8) & 0xFF) + "." + ((i >> 16) & 0xFF) + "." + ((i >> 24) & 0xFF);
}
///
/// µ±Ç°IPµØÖ·
///
public System.Net.IPAddress IpAddress
{
get
{
return System.Net.IPAddress.Parse(GetIPAddress());
}
}
///
/// ¹ã²¥µØÖ·
///
public System.Net.IPAddress BroadcastIpAddress
{
get
{
return System.Net.IPAddress.Parse(getBroadcastAddress());
}
}
string getBroadcastAddress()
{
//var networkInfo = ((ConnectivityManager)Android.App.Application.Context.GetSystemService(Context.ConnectivityService)).ActiveNetworkInfo;
//if (networkInfo != null && networkInfo.IsConnected)
//{
// if (networkInfo.Type == ConnectivityType.Wifi)
// {
// }
//}
var broadcastAddress = "0.0.0.0";
var eni = NetworkInterface.NetworkInterfaces;
while (eni.HasMoreElements)
{
var networkCard = (NetworkInterface)eni.NextElement();
if(!(networkCard.Name=="wlan0"||networkCard.Name=="eth0")){
continue;
}
var ncAddrList = networkCard.InterfaceAddresses;
foreach (var networkCardAddress in ncAddrList)
{
var address = networkCardAddress.Address;
if (!address.IsLoopbackAddress)
{
if (address.HostAddress.IndexOf(":") > 0)
{
// case : ipv6
continue;
}
else
{
// case : ipv4
broadcastAddress = networkCardAddress.Broadcast.HostAddress;
break;
}
}
}
}
return broadcastAddress;
}
}
}