xm
2019-07-16 b910cb79c9b5bcc204022a3cf9e6950f0a64dfbd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
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);
        }
 
        /// <summary>
        /// µ±Ç°IPµØÖ·
        /// </summary>
        public System.Net.IPAddress IpAddress
        {
            get
            {
                return System.Net.IPAddress.Parse(GetIPAddress());
            }
        }
 
        /// <summary>
        /// ¹ã²¥µØÖ·
        /// </summary>
        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;
        }
    }
 
 
}