Chào các bạn, sau một thời gian tiềm hiểu hôm nay mình hướng dẫn các bạn lấy địa chỉ IP và cấc thông tin liên quan đến User như Longitude, Latitude, thành phố, quốc gia, ... để sau này chũng ta lỡ có viết web cần đến các thông tin này thì cũng dễ dàng hơn

Cách 1: lấy địa chỉ IP, cách này mình không dùng nên mình cũng nói sơ qua cách làm, cách này rất đơn giản, các bạn chỉ cần gọi

Mã:
Request.ServerVariables["REMOTE_ADDR"];
Hoặc
Request.UserHostAddress;
Ví dụ:
Mã:
Label1.Text = Request.UserHostAddress;
Cách này khi các bạn chạy lên địa chỉ IP của nó sẽ là 127.0.0.1 vì chúng ta đang chạy trên localhost. Nếu đưa lên mạng internet thì nó sẽ lấy địa chỉ IP của người dùng cụ thể như 115.12.25.63 chẳng hạn, cách này mình chưa biết sao cả vì đây là mình nghe theo anh zstar, mà mình nghĩ anh í nói chắc ko sai đâu ^^


Cách 2: cách này mình sẽ lấy địa chỉ IP của máy thông qua trang web http://checkip.dyndns.org/
Lấy cái đó về và cắt chuỗi nó đi, đây là cái hàm của nó

Mã:
public string GetIPv4Address()
        {
            String direction = "";
            WebRequest request = WebRequest.Create("http://checkip.dyndns.org/");
            using (WebResponse response = request.GetResponse())
            using (StreamReader stream = new StreamReader(response.GetResponseStream()))
            {
                direction = stream.ReadToEnd();
            }

            //Search for the ip in the html
            int first = direction.IndexOf("Address: ") + 9;
            int last = direction.LastIndexOf("</body>");
            direction = direction.Substring(first, last - first);

            return direction;
        }
Tiện thể mình cũng lấy luôn cái hàm lấy địa chỉ IPv6

Mã:
public string GetIPv6Address()
        {
            //Get Host Name
            string stringHostName = Dns.GetHostName();
            //Get Ip Host Entry
            IPHostEntry ipHostEntries = Dns.GetHostEntry(stringHostName);
            //Get Ip Address From The Ip Host Entry Address List
            IPAddress[] arrIpAddress = ipHostEntries.AddressList;
            return arrIpAddress[arrIpAddress.Length - 1].ToString();
        }
và địa chỉ IP Local

Mã:
public static string GetLocalIP()
        {
            string ipv4Address = String.Empty;
            foreach (IPAddress currrentIPAddress in Dns.GetHostAddresses(Dns.GetHostName()))
            {
                if (currrentIPAddress.AddressFamily.ToString() == System.Net.Sockets.AddressFamily.InterNetwork.ToString())
                {
                    ipv4Address = currrentIPAddress.ToString();
                    break;
                }
            }
            return ipv4Address;
        }
khi đã có được địa chỉ IP thì để lấy các thông tin như thành phố, đất nước, kinh độ, vĩ độ,... thì mình biết có 3 cách, trong 3 cách dưới đây mình đều lấy IP từ cái hàm GetIPv4Address()

Cách 1: cách này các bạn sài qua 1 thư viện DLL, cái đó download ở đây _http://ipaddressextensions.codeplex.com
cái này cực dễ sài, khi vào trang web đó người ta đã có ví dụ sẵn cho bạn rồi đó, tuy nhiên thư viện này chỉ lấy được Country (Vietnam), Country Code (VN), nó rất hạn chế [IMG]images/smilies/Cry.gif[/IMG]

cách này mình cũng không dùng đến [IMG]images/smilies/Shame_on_you.gif[/IMG]

Cách 2: là dùng 1 jQuery, cách này để ngày mai nhá, tài liệu mình để trên cty nên quên mất cái link nó ở đâu rồi, mai mình hưỡng dân tiếp, tạm thời trước mắt vậy đã nhá, sozy các bác