国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ASP.NET 獲取客戶端IP、MAC地址

這篇具有很好參考價值的文章主要介紹了ASP.NET 獲取客戶端IP、MAC地址。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebTest.ajax
{
    public partial class ajaxHander : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string json = "\"\"";
            string type = Request.Form["type"].ToString();
            switch (type)
            {
                case "checkip"://錄音文件查詢
                    #region
                    string UserHostAddress = HttpContext.Current.Request.UserHostAddress;//客戶端公網(wǎng)IP地址
                    string UserAgent = HttpContext.Current.Request.UserAgent;                     //客戶端完整用戶代理字符串
                    string UserHostName = HttpContext.Current.Request.UserHostName;      //客戶端DNS名稱
                    //方法一
                    string str1= HttpContext.Current.Request.UserHostAddress;//::1
                    //方法二
                    string str2 = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];//::1
                    //方法三
                    string strHostName = System.Net.Dns.GetHostName();//zh-yinsheng
                    string IPv6 = System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString();//10.199.6.45
                    string IPv4 = System.Net.Dns.GetHostAddresses(strHostName).GetValue(1).ToString();//2.0.0.1
                    //方法四(無視代理)
                    string str3 = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];



                    string LIP = string.Empty;
                    string SIP = string.Empty;
                    string IP = string.Empty;
                    System.Net.IPAddress[] addressList = System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName()).AddressList;
                    if (addressList.Length > 1)
                    {
                        LIP = addressList[0].ToString();//10.199.6.45
                        SIP = addressList[1].ToString();//2.0.0.1
                        IP = addressList[2].ToString();//192.168.43.61
                    }
                    else
                    {
                        IP = addressList[0].ToString();//192.168.43.61
                    }

                    string result = Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
                    if (string.IsNullOrEmpty(result))
                    {
                        result = Context.Request.ServerVariables["REMOTE_ADDR"];//::1
                    }

                    #region 獲取客戶端IP
                    string userIP;
                    HttpRequest Request = HttpContext.Current.Request;
                    // 如果使用代理,獲取真實IP
                    if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] == "")
                        userIP = Request.ServerVariables["REMOTE_ADDR"];
                    else
                        userIP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
                    if (userIP == null || userIP == "")
                        userIP = Request.UserHostAddress;
                    #endregion

                    #region
                    獲取客戶端ip地址
                    //string ipAddress = HttpContext.Current.Request.UserHostAddress.ToString().Trim();
                    調(diào)用函數(shù)得到mac地址
                    //string macAddress = GetMac(IP);
                    #endregion

                    #region 根據(jù)ip獲取mac地址
                    string mac = GetClientMAC();//00-FF-09-A7-86-57
                    #endregion

                    #region MyRegion
                    string loginip = System.Web.HttpContext.Current.Request.UserHostAddress; //獲取IP
                    loginip = IP;//測試使用
                    QQWryLocator qqsry = new QQWryLocator(Server.MapPath("~/ajax/QQWry.Dat")); //http://www.cz88.net/下載
                    IPLocation ip = qqsry.Query(loginip);
                    string City = ip.Country; //ip.Country獲取地區(qū)名
                    #endregion

                    Response.Write(json);
                    break;
                    #endregion
            }
            Response.End();
        }

        #region MyRegion
        //通過IP地址獲取MAC地址的方法(可跨網(wǎng)段獲?。?       
        string GetMac(string IP)
        {
            string dirResults = "";
            System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
            System.Diagnostics.Process proc = new System.Diagnostics.Process();
            psi.FileName = "nbtstat";
            psi.RedirectStandardInput = false;
            psi.RedirectStandardOutput = true;
            psi.Arguments = "-A " + IP;
            psi.UseShellExecute = false;
            proc = System.Diagnostics.Process.Start(psi);
            dirResults = proc.StandardOutput.ReadToEnd();
            proc.WaitForExit();
            dirResults = dirResults.Replace("\r", "").Replace("\n", "").Replace("\t", "");
            System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex("Mac[ ]{0,}Address[ ]{0,}=[ ]{0,}(?<key>((.)*?))__MAC", System.Text.RegularExpressions.RegexOptions.IgnoreCase | System.Text.RegularExpressions.RegexOptions.Compiled);
            System.Text.RegularExpressions.Match mc = reg.Match(dirResults + "__MAC");

            if (mc.Success)
            { return mc.Groups["key"].Value; }
            else
            {
                reg = new System.Text.RegularExpressions.Regex("Host not found", System.Text.RegularExpressions.RegexOptions.IgnoreCase | System.Text.RegularExpressions.RegexOptions.Compiled);
                mc = reg.Match(dirResults);
                if (mc.Success)
                {
                    return "Host not found!";
                }
                else
                { return ""; }
            }
        }
        #endregion

        #region 根據(jù)ip獲取mac地址
        [System.Runtime.InteropServices.DllImport("Iphlpapi.dll")]
        private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);
        [System.Runtime.InteropServices.DllImport("Ws2_32.dll")]
        private static extern Int32 inet_addr(string ip);

        private string GetClientMAC()
        {
            string mac_dest = string.Empty;
            // 在此處放置用戶代碼以初始化頁面
            try
            {
                string userip = Request.UserHostAddress;
                string strClientIP = Request.UserHostAddress.ToString().Trim();//::1
                Int32 ldest = inet_addr(strClientIP); //目的地的ip 
                Int32 lhost = inet_addr("");   //本地服務器的ip 
                Int64 macinfo = new Int64();
                Int32 len = 6;
                int res = SendARP(ldest, 0, ref macinfo, ref len);
                string mac_src = macinfo.ToString("X");
                while (mac_src.Length < 12)
                {
                    mac_src = mac_src.Insert(0, "0");
                }
                for (int i = 0; i < 11; i++)
                {
                    if (0 == (i % 2))
                    {
                        if (i == 10)
                        {
                            mac_dest = mac_dest.Insert(0, mac_src.Substring(i, 2));
                        }
                        else
                        {
                            mac_dest = "-" + mac_dest.Insert(0, mac_src.Substring(i, 2));
                        }

                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return mac_dest;///00-FF-09-A7-86-57
        }
        #endregion

    }

}
using System;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;

namespace WebTest.ajax
{
    public class IPLocation
    {
        private string _IP;
        private string _Country;
        private string _Local;
        public string IP
        {
            get { return _IP; }
            set { _IP = value; }
        }
        public string Country
        {
            get { return _Country; }
            set { _Country = value; }
        }
        public string Local
        {
            get { return _Local; }
            set { _Local = value; }
        }
    }
    public class QQWryLocator
    {
        private byte[] data;
        Regex regex = new Regex(@"(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))");
        long firstStartIpOffset;
        long lastStartIpOffset;
        long ipCount;
        public long Count { get { return ipCount; } }
        public QQWryLocator(string dataPath)
        {
            using (FileStream fs = new FileStream(dataPath, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                data = new byte[fs.Length];
                fs.Read(data, 0, data.Length);
            }
            byte[] buffer = new byte[8];
            Array.Copy(data, 0, buffer, 0, 8);
            firstStartIpOffset = ((buffer[0] + (buffer[1] * 0x100)) + ((buffer[2] * 0x100) * 0x100)) + (((buffer[3] * 0x100) * 0x100) * 0x100);
            lastStartIpOffset = ((buffer[4] + (buffer[5] * 0x100)) + ((buffer[6] * 0x100) * 0x100)) + (((buffer[7] * 0x100) * 0x100) * 0x100);
            ipCount = Convert.ToInt64((double)(((double)(lastStartIpOffset - firstStartIpOffset)) / 7.0));

            if (ipCount <= 1L)
            {
                throw new ArgumentException("ip FileDataError");
            }
        }
        private static long IpToInt(string ip)
        {
            char[] separator = new char[] { '.' };
            if (ip.Split(separator).Length == 3)
            {
                ip = ip + ".0";
            }
            string[] strArray = ip.Split(separator);
            long num2 = ((long.Parse(strArray[0]) * 0x100L) * 0x100L) * 0x100L;
            long num3 = (long.Parse(strArray[1]) * 0x100L) * 0x100L;
            long num4 = long.Parse(strArray[2]) * 0x100L;
            long num5 = long.Parse(strArray[3]);
            return (((num2 + num3) + num4) + num5);
        }
        private static string IntToIP(long ip_Int)
        {
            long num = (long)((ip_Int & 0xff000000L) >> 0x18);
            if (num < 0L)
            {
                num += 0x100L;
            }
            long num2 = (ip_Int & 0xff0000L) >> 0x10;
            if (num2 < 0L)
            {
                num2 += 0x100L;
            }
            long num3 = (ip_Int & 0xff00L) >> 8;
            if (num3 < 0L)
            {
                num3 += 0x100L;
            }
            long num4 = ip_Int & 0xffL;
            if (num4 < 0L)
            {
                num4 += 0x100L;
            }
            return (num.ToString() + "." + num2.ToString() + "." + num3.ToString() + "." + num4.ToString());
        }
        public IPLocation Query(string ip)
        {
            if (!regex.Match(ip).Success)
            {
                throw new ArgumentException("IP格式錯誤");
            }
            IPLocation ipLocation = new IPLocation();
            ipLocation.IP = ip;
            long intIP = IpToInt(ip);
            if ((intIP >= IpToInt("127.0.0.1") && (intIP <= IpToInt("127.255.255.255"))))
            {
                ipLocation.Country = "本機內(nèi)部環(huán)回地址";
                ipLocation.Local = "";
            }
            else
            {
                if ((((intIP >= IpToInt("0.0.0.0")) && (intIP <= IpToInt("2.255.255.255"))) || ((intIP >= IpToInt("64.0.0.0")) && (intIP <= IpToInt("126.255.255.255")))) ||
                ((intIP >= IpToInt("58.0.0.0")) && (intIP <= IpToInt("60.255.255.255"))))
                {
                    ipLocation.Country = "網(wǎng)絡保留地址";
                    ipLocation.Local = "";
                }
            }
            long right = ipCount;
            long left = 0L;
            long middle = 0L;
            long startIp = 0L;
            long endIpOff = 0L;
            long endIp = 0L;
            int countryFlag = 0;
            while (left < (right - 1L))
            {
                middle = (right + left) / 2L;
                startIp = GetStartIp(middle, out endIpOff);
                if (intIP == startIp)
                {
                    left = middle;
                    break;
                }
                if (intIP > startIp)
                {
                    left = middle;
                }
                else
                {
                    right = middle;
                }
            }
            startIp = GetStartIp(left, out endIpOff);
            endIp = GetEndIp(endIpOff, out countryFlag);
            if ((startIp <= intIP) && (endIp >= intIP))
            {
                string local;
                ipLocation.Country = GetCountry(endIpOff, countryFlag, out local);
                ipLocation.Local = local;
            }
            else
            {
                ipLocation.Country = "未知";
                ipLocation.Local = "";
            }
            return ipLocation;
        }
        private long GetStartIp(long left, out long endIpOff)
        {
            long leftOffset = firstStartIpOffset + (left * 7L);
            byte[] buffer = new byte[7];
            Array.Copy(data, leftOffset, buffer, 0, 7);
            endIpOff = (Convert.ToInt64(buffer[4].ToString()) + (Convert.ToInt64(buffer[5].ToString()) * 0x100L)) + ((Convert.ToInt64(buffer[6].ToString()) * 0x100L) * 0x100L);
            return ((Convert.ToInt64(buffer[0].ToString()) + (Convert.ToInt64(buffer[1].ToString()) * 0x100L)) + ((Convert.ToInt64(buffer[2].ToString()) * 0x100L) * 0x100L)) + (((Convert.ToInt64(buffer[3].ToString()) * 0x100L) * 0x100L) * 0x100L);
        }
        private long GetEndIp(long endIpOff, out int countryFlag)
        {
            byte[] buffer = new byte[5];
            Array.Copy(data, endIpOff, buffer, 0, 5);
            countryFlag = buffer[4];
            return ((Convert.ToInt64(buffer[0].ToString()) + (Convert.ToInt64(buffer[1].ToString()) * 0x100L)) + ((Convert.ToInt64(buffer[2].ToString()) * 0x100L) * 0x100L)) + (((Convert.ToInt64(buffer[3].ToString()) * 0x100L) * 0x100L) * 0x100L);
        }
        /// <summary>    
        /// Gets the country.    
        /// </summary>    
        /// <param name="endIpOff">The end ip off.</param>    
        /// <param name="countryFlag">The country flag.</param>    
        /// <param name="local">The local.</param>    
        /// <returns>country</returns>    
        private string GetCountry(long endIpOff, int countryFlag, out string local)
        {
            string country = "";
            long offset = endIpOff + 4L;
            switch (countryFlag)
            {
                case 1:
                case 2:
                    country = GetFlagStr(ref offset, ref countryFlag, ref endIpOff);
                    offset = endIpOff + 8L;
                    local = (1 == countryFlag) ? "" : GetFlagStr(ref offset, ref countryFlag, ref endIpOff);
                    break;
                default:
                    country = GetFlagStr(ref offset, ref countryFlag, ref endIpOff);
                    local = GetFlagStr(ref offset, ref countryFlag, ref endIpOff);
                    break;
            }
            return country;
        }
        private string GetFlagStr(ref long offset, ref int countryFlag, ref long endIpOff)
        {
            int flag = 0;
            byte[] buffer = new byte[3];

            while (true)
            {
                //用于向前累加偏移量    
                long forwardOffset = offset;
                flag = data[forwardOffset++];
                //沒有重定向    
                if (flag != 1 && flag != 2)
                {
                    break;
                }
                Array.Copy(data, forwardOffset, buffer, 0, 3);
                forwardOffset += 3;
                if (flag == 2)
                {
                    countryFlag = 2;
                    endIpOff = offset - 4L;
                }
                offset = (Convert.ToInt64(buffer[0].ToString()) + (Convert.ToInt64(buffer[1].ToString()) * 0x100L)) + ((Convert.ToInt64(buffer[2].ToString()) * 0x100L) * 0x100L);
            }
            if (offset < 12L)
            {
                return "";
            }
            return GetStr(ref offset);
        }
        private string GetStr(ref long offset)
        {
            byte lowByte = 0;
            byte highByte = 0;
            StringBuilder stringBuilder = new StringBuilder();
            byte[] bytes = new byte[2];
            Encoding encoding = Encoding.GetEncoding("GB2312");
            while (true)
            {
                lowByte = data[offset++];
                if (lowByte == 0)
                {
                    return stringBuilder.ToString();
                }
                if (lowByte > 0x7f)
                {
                    highByte = data[offset++];
                    bytes[0] = lowByte;
                    bytes[1] = highByte;
                    if (highByte == 0)
                    {
                        return stringBuilder.ToString();
                    }
                    stringBuilder.Append(encoding.GetString(bytes));
                }
                else
                {
                    stringBuilder.Append((char)lowByte);
                }
            }
        }
    }
}
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>JavaScript獲取客戶端IP[利用接口]</title>
    <link rel="stylesheet" >
    <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
    <div>
        <h3>方法:使用搜狐接口(所有的平臺及瀏覽器)JS無法獲取到客戶端端口號以及mac地址</h3>
        <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
        <script type="text/javascript">
            document.write(returnCitySN["cip"] + ',' + returnCitySN["cname"]);
            console.log(returnCitySN);
        </script>
    </div>
    <div>
        <input id="btncheckip" type="button" style="height:30px;margin-left:5px;" value="查詢ip" />
    </div>
</body>
</html>

<script type="text/javascript">
    $(document).ready(function () {
        //查詢ip
        $("#btncheckip").click(function () {

            $.ajax({
                type: "post",
                url: '../ajax/ajaxHander.aspx',
                data: "type=checkip",
                dataType: "json",
                success: function (data) {
                    if (data != "") {
                    }
                }
            });

        });

    });
</script>

aspx獲取客戶端ip地址,個人筆記,Asp.Net,asp.net,tcp/ip,macos?

qqwry.dat 純真IP數(shù)據(jù)庫下載地址:?

https://www.duote.com/soft/848527.html

?文章來源地址http://www.zghlxwxcb.cn/news/detail-618234.html

到了這里,關于ASP.NET 獲取客戶端IP、MAC地址的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • nginx-獲取客戶端IP地址

    nginx-獲取客戶端IP地址

    上有服務器與客戶端中間是有nginx代理服務器的,上游服務器如何獲取客戶端真實ip地址? nginx代理服務器設置X-Forwarded-For的header參數(shù),代理服務器通過remote_addr獲取客戶端ip地址,將ip地址寫入nginx代理服務器的X-Forwarded-For中, 上游服務端通過在nginx的這個參數(shù)拿到客戶端IP地

    2024年02月11日
    瀏覽(26)
  • 【JavaScript】如何獲取客戶端IP地址?

    使用這個庫:request-ip 它按照如下順序獲取請求的IP地址: X-Client-IP X-Forwarded-For (Header may return multiple IP addresses in the format: “client IP, proxy 1 IP, proxy 2 IP”, so we take the first one.) CF-Connecting-IP (Cloudflare) Fastly-Client-Ip (Fastly CDN and Firebase hosting header when forwared to a cloud function) True-Clie

    2024年02月05日
    瀏覽(17)
  • Java 獲取客戶端請求IP地址

    2024年02月15日
    瀏覽(32)
  • 獲取客戶端真實 IP 地址的最佳實踐

    1. 業(yè)務上云帶來性能收益 公司從去年全面推動業(yè)務上云,而以往 IDC 架構(gòu)部署上,接入層采用典型的 4 層 LVS 多機房容災架構(gòu),在業(yè)務高峰時期,擴容困難(受限于物理機資源和 LVS 內(nèi)網(wǎng)網(wǎng)段的網(wǎng)絡規(guī)劃),且抵擋不住 HTTPS 卸載引發(fā)的高 CPU 占用。 而經(jīng)過壓力測試發(fā)現(xiàn),使用

    2024年02月05日
    瀏覽(30)
  • Java WebSocket 獲取客戶端 IP 地址

    在開發(fā) Web 應用程序時,我們通常需要獲取客戶端的 IP 地址用于日志記錄、身份驗證、限制訪問等操作。當使用 WebSocket 協(xié)議時,我們可以使用 Java WebSocket API 來獲取客戶端的 IP 地址。 本文將介紹如何使用 Java WebSocket API 獲取客戶端 IP 地址,以及如何在常見的 WebSocket 框架中

    2024年02月05日
    瀏覽(27)
  • Nginx代理后獲取客戶端真實IP地址

    Nginx代理后獲取客戶端真實IP地址

    在項目實際應用中,我們可能會需要獲取到用戶也就是客戶端的真實IP地址,比如記錄系統(tǒng)操作日志等情況。 通常情況下我們可以使用以下方式來獲取IP地址 但是當我們使用Nginx反向代理項目地址后,使用以上方法只能獲取到Nginx服務器的IP地址,并不是客戶端的IP地址。 解決

    2023年04月11日
    瀏覽(41)
  • 【Java開發(fā)】之獲取客戶端真實 IP 地址

    在投票系統(tǒng)開發(fā)中,為了防止刷票,我們需要限制每個 IP 地址只能投票一次; 當網(wǎng)站受到諸如 DDoS(Distributed Denial of Service,分布式拒絕服務攻擊)等攻擊時,我們需要快速定位攻擊者 IP; 在滲透測試過程中,經(jīng)常會碰到網(wǎng)站有 CDN(Content Distribution Network,內(nèi)容交付網(wǎng)絡),

    2024年02月04日
    瀏覽(37)
  • Qt 獲取本機 ip地址方法 獲取客戶端ip和端口的方法

    上述函數(shù)返回本機所有IPv4的ip地址列表,比如192.168.1.10|192.166.1.95 其它方法=》 獲取客戶端IP地址:

    2024年02月14日
    瀏覽(17)
  • Docker部署Nginx,無法獲取客戶端真實ip地址

    Docker部署Nginx,無法獲取客戶端真實ip地址

    在部署docker版本nginx進行請求轉(zhuǎn)發(fā),意外發(fā)現(xiàn)nginx打印日志中的客戶端ip并非為客戶端的真實ip(221.237.xxx.xxx),而是docker虛擬網(wǎng)卡的ip(172.17.0.1) 開始猜測是nginx配置問題,對比其他環(huán)境,發(fā)現(xiàn)配置相同,但其他環(huán)境未出現(xiàn)此情況 通過查詢資料,推測是docker網(wǎng)橋和linux防火墻存在

    2023年04月21日
    瀏覽(25)
  • Java編程技巧:獲取ip地址、通過ip獲取地理位置、獲取客戶端操作系統(tǒng)、獲取客戶端瀏覽器、獲取主機名、獲取操作系統(tǒng)、獲取系統(tǒng)架構(gòu)

    說明: 大家直接去對應項目位置找到代碼,然后看著復制就行了 1.1、若依(自己寫的代碼) 項目:https://gitee.com/y_project/RuoYi 子模塊:ruoyi-common 所在類:com.ruoyi.common.utils.IpUtils 所在方法:getIpAddr 詳細位置:整個方法 1.2、Snowy(借助hutool工具包) 項目:https://gitee.com/xiaonuo

    2024年02月04日
    瀏覽(236)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包