公司内部是使用的内网IP像192.168.1.1 出外网就是一个静态的IP 如68.156.54.56
如何用C#获取到公司内部的机器名或者是他内网的IP 是(192.168.1.1)这种的IP 不是出去的静态的IP,
因为出去的IP地址都一样.不能分别是谁操作的!希望大哥大姐们帮帮忙啊.网上找的都获取 出外网的IP!

解决方案 »

  1.   

         引用System.net
       public string getip()
                {
                
                    System.Net.IPAddress addr;
                   // 获得本机局域网IP地址 
                 addr = new System.Net.IPAddress ( Dns.GetHostByName ( Dns.GetHostName ( ) ) .AddressList [0].Address ) ; 
                    return addr.ToString()+System.Net.Dns.GetHostName(); 
                }
      

  2.   

    using System;
    using System.IO;
    using System.Net;
    using System.Text;
    using System.Text.RegularExpressions;
    namespace ipip
    {
    /// <summary>
    /// Class1 的摘要说明。
    /// 获取本机上网IP和内网IP
    /// </summary>
    public class Class1
    {   private string strgetIP;
      
       public Class1()
       {
        //
      
       netIP();
       getIP(); 
       }
      
      
       
         public string renetIP()
       {return netIP();}//返回网络IP   public string regetIP()
       {return strgetIP;}//返回内网IP  
       static string netIP()
       {
        Uri uri = new Uri("http://www.ikaka.com/ip/index.asp");//查本机网络IP的网页
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
        req.Method = "POST";
        req.ContentType = "application/x-www-form-urlencoded";
        req.ContentLength = 0;
        req.CookieContainer = new CookieContainer();
        req.GetRequestStream().Write(new byte [0], 0, 0);
        HttpWebResponse res = (HttpWebResponse)(req.GetResponse());
        StreamReader rs = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding("GB18030"));
        string s = rs.ReadToEnd();
        rs.Close();
        req.Abort();
        res.Close();
        Match m = Regex.Match(s, @"IP:\[(?<IP>[0-9\.]*)\]");
        if (m.Success) return m.Groups["IP"].Value;
        string strnetIP= string.Empty;
        return strnetIP;
       }   public string getIP()//注意与static 的区别
       {
        System.Net.IPAddress[] addressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;//获取本机内网IP
           strgetIP = addressList[0].ToString();
         return strgetIP;
       
       }  }} 
      

  3.   

    内网IP?没拿过
    不知道LZ拿来是做什么用的,如果是根据这个判断是哪台机器
    那么可以拿MAC地址试试<SCRIPT language="jscript" event="OnObjectReady(objObject,objAsyncContext)" for="foo">
       if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true)
       {
        if(objObject.MACAddress != null && objObject.MACAddress != "undefined")
        {
            if(objObject.ServiceName != "VMnetAdapter")//判断是否是虚拟网卡
            {
                var array = MACAddr.split(';');
                var bIsContains = false;
                for(var i=0;i<array.length;i++)
                {
                    if(array[i] == objObject.MACAddress)
                    {
                        bIsContains = true;
                    }
                }
                if(!bIsContains)
                {
                    MACAddr += objObject.MACAddress + ";";
                }
            }
        }
       }
      </SCRIPT><body>
    <OBJECT id="locator" classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6" VIEWASTEXT>
      </OBJECT>
      <OBJECT id="foo" classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223" VIEWASTEXT>
      </OBJECT>
      <SCRIPT language="jscript">
          var locator = new ActiveXObject("WbemScripting.SWbemLocator");
          var service = locator.ConnectServer(".");
          var MACAddr = "";
          var IPAddr;
          var DomainAddr;
          var sDNSName;
          service.Security_.ImpersonationLevel = 3;
          service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');
      </SCRIPT>
    <form>
    ...
    </form>
    <SCRIPT language="jscript" event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for="foo">
        
           document.getElementById("<%=hfMACAddress.ClientID %>").value =MACAddr;//此处将MAC存入一个隐藏域,方便后台读取
          </SCRIPT>
    </body>拿到的MACAddr 就是客户端的MAC地址
      

  4.   

    这个问题在服务器上获取内网IP.实现起来好像很难.我还没找到解决方案.不过我是这样处理的.用JS在客户段把你的IP获取到保存到表单中.一起提交到后台处理.这样还有浏览器的安全级别问题.虽然不咋的好.但能取到你机器的IP.这IP就是机器上的配置的IP.<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>test</title>
        <script language="jscript" event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for="foo">           
           //alert(unescape(MACAddr)); 
           alert(unescape(IPAddr));   
           alert(unescape(sDNSName));   
          //document.formbar.submit();   
        </script>   
      
        <script language="jscript" 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>
        <object id="locator" classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT"></object>   
        <object id="foo" classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223"></object>   
        <script language="jscript">   
        var service = locator.ConnectServer();   
        var MACAddr ;   
        var IPAddr ;   
        var DomainAddr;   
        var sDNSName;   
        service.Security_.ImpersonationLevel=3;   
        service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');   
        </script> 
    </body>
    </html>这样处理后要把浏览器的安全级别中的activeX都启用后就可以看到客户端的IP了。
      

  5.   

    我觉得你的这个需求有问题,因为外部访问肯定是只能访问你的外部网,而你的内部网只能是你在内部才能访问的,如果人家外面都可以访问你的内部网的IP了,那不是说你一个网就有多个IP地址了,这肯定是不可能的