zoukankan      html  css  js  c++  java
  • C# 之 获取服务器IP,客户端IP以及其它

    本文主要是从网络上搜索的文章进行参考,也是提供一个大概的方向和思路吧。当然如果有能用的代码,可直接复制过去根据自己的情况修改和使用。

    一、思路(主要用于局域网内)

    通过Web获取客户端的IP地址较简单,从客户端向web服务器发送的数据报中(Request对象)中即可
    解析出,但实际应用中,还要考虑代理服务器,路由器的转发等等。

    而获取MAC的过程较复杂,因为客户端向服务器发送的请求对象中不包含MAC地址,因此得到两种思
    路来获取客户端MAC地址:

      (1).在客户端来获取客户机的MAC地址,所以当请求到达客户端后,通过客户端脚本来获取客户端
    MAC地址,然后再传送给服务器端。

      (2).先获取客户端IP地址,然后在局域网中发送ARP请求,通过ARP协议和已知的IP地址来解析客户
    端的MAC地址

    下面为获取IP地址、MAC地址的的代码, 以及通过发送ARP请求解析MAC地址的过程:

    https://blog.csdn.net/wang379275614/article/details/17596135

    -------------------------------------------------------------------------------

    切记要引用命名空间:using System.Management。
    心中窃喜,呵呵还是比较简单的。测试,晕 ! 这么做获取的是服务器的MAC。
    要获取客户端的MAC用C#做就比较复杂了。网上也有很多类似的例子,不过获取客户端的信息最好还是用
    客户端脚本比较好。下面是个JavaScript的获取MAC的例子(转):
    https://www.cnblogs.com/kingboy/articles/1025399.html

    -------------------------------------------------------------------------------

    Request.UserHostAddress

    string IP = (Request.ServerVariables["HTTP_VIA"]!=null)?Request.ServerVariables
    ["HTTP_X_FORWARDED_FOR"].ToString():Request.ServerVariables["REMOTE_ADDR"].ToString();

    string ipAddress = System.Web.HttpContext.Current.Request.UserHostAddress;

    先引用命名空间:using System.Net;
    得到客户端IP地址:Request.ServerVariables["REMOTE_ADDR"]或Rqurest.UserHostAddress();
    得到本机IP地址:Request.ServerVariables["local_addr"]或addr = new System.Net.IPAddress (
    Dns.GetHostByName ( Dns.GetHostName ( ) ) .AddressList [0].Address ) ;

    HttpBrowserCapabilities bc= Request.Browser;
    Label3.Text=bc.Browser+" "+bc.Version;//得到浏览器版本
    Label2.Text=bc.Platform;//得到操作系统
    hostname=Dns.GetHostName();
    IPHostEntry jj=Dns.GetHostByName(hostname);//得到IP
    //IPAddress ip=Dns.Resolve(hostname);
    Label1.Text=jj.AddressList[0].ToString();

    https://bbs.csdn.net/topics/90213110

    -------------------------------------------------------------------------------

    ------------------------------------------------------------------------------

    1、获取客户端IP:Request.ServerVariables.Get("Remote_Addr").ToString();

    2、获取客户端主机名:Request.ServerVariables.Get("Remote_Host").ToString();

    3、获取客户端浏览器:Request.Browser.Browser;

    4、获取客户端浏览器 版本号:Request.Browser.MajorVersion;

    5、获取客户端操作系统:Request.Browser.Platform;

    6、获取服务器IP:Request.ServerVariables.Get("Local_Addr").ToString();

    7、获取服务器名:Request.ServerVariables.Get("Server_Name").ToString();


    如果你想进一步了解ServerVariables,可以用

    foreach(String o in Request.ServerVariables){
        Response.Write(o+"="+Request.ServerVariables[o]+"<br>");
    }
    复制代码
    string stringMAC = "";
       string stringIP = "";
       ManagementClass MC = new ManagementClass ("Win32_NetworkAdapterConfiguration");
       ManagementObjectCollection MOC= MC.GetInstances();
    
       foreach(ManagementObject MO in MOC)
       {
        if ((bool)MO["IPEnabled"] == true)
        {
           stringMAC += MO["MACAddress"].ToString(); //获取网卡的地址
           string[] IPAddresses = (string[]) MO["IPAddress"]; //获取本地的IP地址
           if(IPAddresses.Length > 0)
           stringIP = IPAddresses[0];
           Response.Write(stringMAC+"/"+stringIP);
         }
       }
    复制代码



    asp.net
    +c#如何获取客户端网卡的MAC地址?

    复制代码
    //要引用到以下两个命名空间
    using System.Diagnostics;
    using System.Text.RegularExpressions;
    
    //获取远程客户端的网卡物理地址(MAC)
    public string GetMac(string IP)   //para IP is the client's IP
    {
    string dirResults="";
    ProcessStartInfo psi = new ProcessStartInfo();
    Process proc = new Process();
    psi.FileName = "nbtstat";
    psi.RedirectStandardInput = false;
    psi.RedirectStandardOutput = true;
    psi.Arguments = "-A " + IP;
    psi.UseShellExecute = false;
    proc = Process.Start(psi);
    dirResults = proc.StandardOutput.ReadToEnd();
    proc.WaitForExit();
    dirResults=dirResults.Replace("
    ","").Replace("
    ","").Replace("	","");
    
    Regex reg=new Regex("Mac[ ]{0,}Address[ ]{0,}=[ ]{0,}(?<key>((.)*?))__MAC",RegexOptions.IgnoreCase|RegexOptions.Compiled);
    Match mc=reg.Match(dirResults+"__MAC");
    
    if(mc.Success)   
    {
    return mc.Groups["key"].Value;
    }
    else
    {
    reg=new Regex("Host not found",RegexOptions.IgnoreCase|RegexOptions.Compiled);
    mc=reg.Match(dirResults);
    if(mc.Success)
    {
    return "Host not found!";
    }
    else
    {
    return "";
    }
    }
    }
    
    //在页面上打印出客户端的网卡物理地址(MAC)
    Response.Write(this.GetMac(Request.UserHostAddress.ToString()));
    复制代码



     获取cpu序列号,硬盘ID,网卡MAC地址
    private void GetInfo()
      
    {
       
    string cpuInfo = "";//cpu序列号
       ManagementClass cimobject = new ManagementClass("Win32_Processor");
       ManagementObjectCollection moc 
    = cimobject.GetInstances();
       
    foreach(ManagementObject mo in moc)
       
    {
        cpuInfo 
    = mo.Properties["ProcessorId"].Value.ToString();
        Response.Write (
    "cpu序列号:"+cpuInfo.ToString ());
       }


       
    //获取硬盘ID
       String HDid;
       ManagementClass cimobject1 
    = new ManagementClass("Win32_DiskDrive");
       ManagementObjectCollection moc1 
    = cimobject1.GetInstances();
       
    foreach(ManagementObject mo in moc1)
       
    {
        HDid 
    = (string)mo.Properties["Model"].Value;
        Response.Write (
    "硬盘序列号:"+HDid.ToString ());
       }



       
    //获取网卡硬件地址

       ManagementClass mc 
    = new ManagementClass("Win32_NetworkAdapterConfiguration");
       ManagementObjectCollection moc2 
    = mc.GetInstances();
       
    foreach(ManagementObject mo in moc2)
       
    {
        
    if((bool)mo["IPEnabled"== true)
         Response.Write(
    "MAC address {0}"+mo["MacAddress"].ToString());
        mo.Dispose();
       }

      

    出处:https://www.cnblogs.com/xinaixia/p/4772955.html

  • 相关阅读:
    XML炸弹
    IP分片攻击——就是发送部分分片报文,让对方一直等待从而耗对方内存的DoS攻击
    灰色软件——广告软件,拨号软件,远程访问软件等
    rootkit——一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,一般都和木马、后门等其他恶意程序结合使用
    漏洞利用 Exploit---利用默认口令、IP假冒、应用漏洞
    SequenceFile文件
    随机森林和GBDT的几个核心问题
    机器学习中的算法(1)-决策树模型组合之随机森林与GBDT
    直方图中最大矩形面积
    openMP多线程编程
  • 原文地址:https://www.cnblogs.com/mq0036/p/9309585.html
Copyright © 2011-2022 走看看