asp.net 獲取客戶端IP與mac_.Net教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:讓.Net 應用程序突破2G的內存訪問限制
      32位Windows操作系統下單個進程的用戶模式內存訪問的限制是2G,如果在boot.ini中設置了/3G開關,則最大為3G,超過3G將無法訪問。由于Hubble.net 項目是一個數據庫系統,必須要考慮使用大內

      獲取客戶端IP:

      以下為引用的內容:

      private string GetClientIP()
      {
      string result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
      if (null == result || result == String.Empty)
      {
      result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
      }

      if (null == result || result == String.Empty)
      {
      result = HttpContext.Current.Request.UserHostAddress;
      }
      return result;
      }

      獲取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);

      private void Page_Load(object sender, System.EventArgs e)
      {
      // 在此處放置用戶代碼以初始化頁面
      try
      {
      string userip=Request.UserHostAddress;
      string strClientIP = Request.UserHostAddress.ToString().Trim();
      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");
      if(mac_src == "0")
      {
      if(userip=="127.0.0.1")
      Response.Write ("正在訪問Localhost!");
      else
      Response.Write ("歡迎來自IP為" userip "的朋友!" "
      ");
      return;
      }

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

      string mac_dest="";

      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));
      }
      }
      }

      //方法二
      using System.Text.RegularExpressions;
      using System.Diagnostics;
      public class test
      {
      public test
      {}
      public static string GetCustomerMac(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("\r","").Replace("\n","").Replace("\t","");

      Regex reg=new Regex("Mac[ ]{0,}Address[ ]{0,}=[ ]{0,}(?((.)*?)) __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 "";
      }
      }
      }
      }

      這種方法有些地方得好好摸索,不然看不懂的

       

      //

      獲取服務器的IP地址方法以DNS法較為簡單實用,如下:
      using System.Net;

      private void ButtonIP_Click(object sender, System.EventArgs e)
      {
      System.Net.IPAddress[] addressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;
      if ( addressList.Length>1)
      { TextLIP.Text = addressList[0].ToString();
      TextSIP.Text = addressList[1].ToString();
      }
      else
      {
      TextLIP.Text = addressList[0].ToString();
      TextSIP.Text = "沒有可用的連接";
      }
      }

      獲取服務器的IP地址與MAC地址另一方法如下:

      分享:解讀.NET 2.0中Hashtable快速查找的方法
      一般來說我們都是用 Hashtable 的 ContainsKey 方法來查找 Hashtable 中是否存在某個鍵值然后讀取他,但是這個方法并不是效率最好的方法。比較好的方法是直接讀取鍵值然后判斷這個對象是否

      共2頁上一頁12下一頁
      來源:模板無憂//所屬分類:.Net教程/更新時間:2008-12-05
      相關.Net教程