zoukankan      html  css  js  c++  java
  • 关于从客户端获取IP地址和网卡地址的方法

        关于从客户端获取IP地址和网卡地址的方法
    一、其实asp.net里面有一个方法就是Page.Request.UserHostAddress,这个方法如果在局域网里还行,但是如果在广域网就不行,因为他获取的是公共的IP,那么如何获取呢?
    曾经我在网上还看到一种获取MAC的方法,如下:
     [DllImport("Iphlpapi.dll")]
        
    private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);
        [DllImport(
    "Ws2_32.dll")]
        
    private static extern Int32 inet_addr(string ip);

        
    public string GetMAC()
        
    {
            
    string mac_dest = "";
            
    try
            
    {
                
    string userip = Request.UserHostAddress;
                Int32 ldest 
    = inet_addr(userip); //目的地的ip 
                Int32 lhost = inet_addr(""); //本地服务器的ip 
                Int64 macinfo = new Int64();
                Int32 len 
    = 6;        
                
    int res = SendARP(ldest, 0ref macinfo, ref len);
                
    string mac_src = macinfo.ToString("X");
                
    if (mac_src == "0")
                
    {
                    
    //if (userip == "127.0.0.1")
                    
    //    userinfo.Text = "正在访问Localhost!";
                    
    //else
                    
    //    userinfo.Text = "欢迎来自IP为" + userip + "的朋友!";
                    return "";
                }

                
    while (mac_src.Length < 12)
                
    {
                    mac_src 
    = mac_src.Insert(0"0");
                }

              
                
    for (int i = 0; i < 11; i++)
                
    {
                    
    if (0 == (i % 2))
                        mac_dest 
    = mac_dest.Insert(0, mac_src.Substring(i, 2));
                }

                
    //userinfo.Text = "欢迎来自IP为" + userip + ",MAC地址为" + mac_dest + "的朋友!";
            }

            
    catch (Exception err)
            
    {
                Response.Write(err.Message);
            }

            
    return mac_dest;
        }

        
    public string GetOS()
        
    {
            HttpBrowserCapabilities info 
    = Request.Browser;
            
    return info.Platform.ToString();
        }

        
    public string GetIE()
        
    {
            HttpBrowserCapabilities info 
    = Request.Browser;
            
    return info.Browser+" "+info .Version;
        }
    但是在广域网里好象也不能获取到客户的MAC地址。
    二、用ActionX控件获取
    用控件是完全可以获取的,但是也有他的短处,就是如果客户段禁用了ActionX控件的运行,那就没希望了,这个问题我一直没解决,如果有人解决了,希望能告诉我,谢谢!
    代码如下:
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="manager_Index" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        
    <title>title>
         
    <link href="css/SITE.CSS" type="text/css" rel="stylesheet" />          
         
         
    <SCRIPT language=javascript event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for=foo>
     document.forms[
    0].txtMACAddr.value=unescape(MACAddr);
     document.forms[
    0].txtIPAddr.value=unescape(IPAddr);
     document.forms[
    0].txtDNSName.value=unescape(sDNSName);
     
    //document.formbar.submit();
      </SCRIPT>

    <SCRIPT language=javascript event=OnObjectReady(objObject,objAsyncContext) for=foo>
       
    if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true)
       
    {
        
    if(objObject.MACAddress != null && objObject.MACAddress != "undefined")
        MACAddr 
    = objObject.MACAddress;
        
    if(objObject.IPEnabled && objObject.IPAddress(0!= null && objObject.IPAddress(0!= "undefined")
        IPAddr 
    = objObject.IPAddress(0);
        
    if(objObject.DNSHostName != null && objObject.DNSHostName != "undefined")
        sDNSName 
    = objObject.DNSHostName;
        }

      
    </SCRIPT>     
         
    </head>
    <body style="text-align: center" onload="javascript:form1.TextBox1.focus();">
     
     
    <OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 height=1></OBJECT>
    <OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223 height=1></OBJECT>
    <SCRIPT language=javascript>
       var service 
    = locator.ConnectServer();
       var MACAddr ;
       var IPAddr ;
       var DomainAddr;
       var sDNSName;
       service.Security_.ImpersonationLevel
    =3;
       service.InstancesOfAsync(foo, 
    'Win32_NetworkAdapterConfiguration');
       
    </SCRIPT>
       
        
    <form id="form1" runat="server">
            
    <table border="0" cellpadding="0" cellspacing="0" style=" 600px; height: 363px;">
             
    <tr>
                    
    <td style=" 600px; height: 66px;">
                    
    </td>
                
    </tr>
                
    <tr>
                    
    <td style=" 600px">
                        
    <img src="images/logo.jpg" /></td>
                
    </tr>
                
    <tr>
                    
    <td style=" 600px; background-image: url(images/headerbg.gif); vertical-align: middle; height: 43px; background-color: #28629b;">
                        
    <table border="0" cellpadding="0" cellspacing="0" style=" 100%">
                            
    <tr>
                                
    <td style="font-weight: bold; font-size: 15px;  112px; color: #000066; text-align: right;">
                                    用户名
                                    
    <img src="images/login_user.gif" /></td>
                                
    <td style=" 96px; text-align: center;">
                                    
    <asp:TextBox ID="TextBox1" runat="server" CssClass="editbox3" Width="103px" onmouseover="this.focus()" onfocus="this.select()"></asp:TextBox></td>
                                
    <td style="font-weight: bold; font-size: 15px;  92px; color: #333366; text-align: right;">
                                    密码
                                    
    <img src="images/login_pass.gif" /></td>
                                
    <td style=" 94px; text-align: center;">
                                    
    <asp:TextBox ID="TextBox2" runat="server" CssClass="editbox3" Width="99px" onmouseover="this.focus()" onfocus="this.select()" TextMode="Password"></asp:TextBox></td>
                                
    <td style=" 100px">
                                    
    <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/images/login_btn.gif" OnClick="ImageButton1_Click" /></td>
                            
    </tr>
                        
    </table>
                    
    </td>
                
    </tr>
            
    </table>      
        
    <INPUT value=""   name="txtMACAddr" style=" visibility:hidden"> 
        
    <INPUT value=""  name="txtIPAddr" style=" visibility:hidden"> 
        
    <INPUT value="" name="txtDNSName" style=" visibility:hidden"> 
        
    </form>  
    </body>
    </html>
    所要得地址就在三个隐藏的控件里。
    记住,一定要让浏览器可以运行ActionX控件。
  • 相关阅读:
    目标检测之YOLOv3
    残差网络(ResNet)
    FPN详解
    YOLOv2/YOLO 9000深入理解
    批归一化(BN)
    全卷积网络FCN
    基于深度学习的目标检测算法综述
    目标检测两个基础部分——backbone and detection head
    YOLOv1 深入理解
    内置模块
  • 原文地址:https://www.cnblogs.com/ringwang/p/990650.html
Copyright © 2011-2022 走看看