.NET 后台中

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Runtime.InteropServices;
namespace WebApplication3
{
public partial class a1 : System.Web.UI.Page
{
[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);
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(GetClientMAC());
Response.Write("<br>");
Response.Write(gett());
return;
}
///<summary>
///得到客户端ip
///</summary>
///<returns>ip</returns>
private static 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;
} ///<summary>
/// 利用客户端ip得到客户端mac
///</summary>
///<param name="remoteip">客户端ip</param>
///<returns>int16类型的mac</returns>
static private Int64 getremotemac(string remoteip)
{
Int32 ldest = inet_addr(remoteip);
try
{
Int64 macinfo = new Int64();
Int32 len = ;
int res = SendARP(ldest, , ref macinfo, ref len);
return macinfo;
}
catch (Exception err)
{
throw err;
}
return ;
} ///<summary>
/// int64类型的mac转换成正确的客户端mac
///</summary>
///<returns>mac</returns>
public static string GetClientMAC()
{
Int64 macid = getremotemac(GetClientIP());
if (macid == )
return "";
string beforeMacAddr = Convert.ToString(macid, );
string endMacAddr = "";
string[] macArray = new string[];
for (int i = ; i < ; i++)
{
macArray[i] = beforeMacAddr.Substring(i * , );
}
for (int i = ; i < ; i++)
{
endMacAddr += macArray[ - i] + "-";
}
endMacAddr = endMacAddr.Substring(, endMacAddr.Length - );
endMacAddr = endMacAddr.ToUpper();
return endMacAddr;
}
public static string gett()
{
string userip = HttpContext.Current.Request.UserHostAddress;
string strClientIP = HttpContext.Current.Request.UserHostAddress.ToString().Trim();
Int32 ldest = inet_addr(strClientIP); //目的地的ip
Int32 lhost = inet_addr(""); //本地服务器的ip
Int64 macinfo = new Int64();
Int32 len = ;
int res = SendARP(ldest, , ref macinfo, ref len);
string mac_src = macinfo.ToString("X");
if (mac_src == "")
{
if (userip == "127.0.0.1")
return "正在访问Localhost!";
else
return "欢迎来自IP为" + userip + "的朋友!" + "<br>";
} while (mac_src.Length < )
{
mac_src = mac_src.Insert(, "");
} string mac_dest = ""; for (int i = ; i < ; i++)
{
if ( == (i % ))
{
if (i == )
{
mac_dest = mac_dest.Insert(, mac_src.Substring(i, ));
}
else
{
mac_dest = "-" + mac_dest.Insert(, mac_src.Substring(i, ));
}
}
} return "欢迎来自IP为" + userip + "<br>" + ",MAC地址为" + mac_dest + "的朋友!" + "<br>";
} }
}

JS 中(限IE安装插件之后):

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="a1.aspx.cs" Inherits="WebApplication3.a1" %>

<!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>
</head>
<body>
<div style="display:none">
<OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT>
<OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></OBJECT>
</div>
<form id="formfoo" name="formfoo" runat="server">
<div>
<br/>MAC地址:<input type="text" name="macAddress">*仅IE浏览器下 显示,如果不显示 IE浏览器需要做设置允许未标记的activex
<br/>IP地址:<input type="text" name="ipAddress">
<br/>主机名:<input type="text" name="hostName">
</div> <script language="javascript">
var sMacAddr="";
var sIPAddr="";
var sDNSName="";
var service = locator.ConnectServer();
service.Security_.ImpersonationLevel=3;
service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');
</script>
<script FOR="foo" EVENT="OnObjectReady(objObject,objAsyncContext)" LANGUAGE="JScript">
if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true){
if(objObject.IPEnabled && objObject.IPAddress(0) !=null && objObject.IPAddress(0) != "undefined")
sIPAddr = objObject.IPAddress(0);
if(objObject.MACAddress != null &&objObject.MACAddress != "undefined")
sMacAddr = objObject.MACAddress;
if(objObject.DNSHostName != null &&objObject.DNSHostName != "undefined")
sDNSName = objObject.DNSHostName;
}
</script> <script FOR="foo" EVENT="OnCompleted(hResult,pErrorObject, pAsyncContext)" LANGUAGE="JScript">
formfoo.macAddress.value=sMacAddr;
formfoo.ipAddress.value=sIPAddr;
formfoo.hostName.value=sDNSName;
</script>
</form>
</body>
</html>

获取MAC地址的几种方式的更多相关文章

  1. C#获取MAC地址的几种方法

    首先需要用到的一些方法和类: public enum NCBCONST { NCBNAMSZ = 16, MAX_LANA = 254, NCBENUM = 0x37, NRC_GOODRET = 0 ...

  2. 【转载】VC获取MAC地址的4种方法

    From:http://blog.csdn.net/pdfmaker/article/details/465748 有需求才有创造,有了问题才会想着去解决,那么我这里的获取MAC地址的第4种方法也是在 ...

  3. c# 获取mac地址的2种方法

    和大家分享下,互相学习一下吧.第一个获取方法好像获取不到mac地址,我用了第二种方法可以获取到.希望知道的可以说下为什么. 1,首先要添加引用:using System.Management; 2,代 ...

  4. .net 获取IP地址的几种方式

    1.获取服务器IP地址: 1) Local_Addr var Local_Addr = Request.ServerVariables.Get("Local_Addr").ToSt ...

  5. 【转载】获取MAC地址方法大全

    From:http://blog.csdn.net/han2814675/article/details/6223617 Windows平台下用C++代码取得机器的MAC地址并不是一件简单直接的事情. ...

  6. android获取Mac地址和IP地址

    获取Mac地址实际项目中测试了如下几种方法:(1)设备开通Wifi连接,获取到网卡的MAC地址(但是不开通wifi,这种方法获取不到Mac地址,这种方法也是网络上使用的最多的方法) //根据Wifi信 ...

  7. windows下获取IP地址的两种方法

    windows下获取IP地址的两种方法: 一种可以获取IPv4和IPv6,但是需要WSAStartup: 一种只能取到IPv4,但是不需要WSAStartup: 如下: 方法一:(可以获取IPv4和I ...

  8. Java -- 获取MAC地址

    啦啦啦 package com.xindatai.common.util; import java.io.InputStream; import java.util.regex.Matcher; im ...

  9. 使用 SendARP 获取 MAC 地址(使用SendARP API函数,很多相关文章)

    ARP 协议地址解析协议(ARP)是通过解析网路层地址来找寻数据链路层地址的一个在网络协议包中极其重要的网络传输协议.ARP 最初在 1982 年的 RFC 826 中提出并纳入互联网标准 STD 3 ...

随机推荐

  1. 【Alpha版本】 第八天 11.16

    一.站立式会议照片: 二.项目燃尽图: 三.项目进展: 成 员 昨天完成任务 今天完成任务 明天要做任务 问题困难 心得体会 胡泽善 完成我要应聘的列表显示,完成账户信息设置界面 完成我要应聘的详情显 ...

  2. BZOJ1577 USACO 2009 Feb Gold 1.Fair Shuttle Solution

    权限题,不给传送门啦!在学校OJ上交的.. 有些不开心,又是一道贪心,又是一个高级数据结构的模板,又是看了别人的题解还写崩了QAQ,蒟蒻不需要理由呀. 正经题解: 首先,我们可以由「显然成立法」得出, ...

  3. SSM的各个配置文件

    SqlMapConfig.xml文件:(这是带了mybatis的分页插件的配置) <?xml version="1.0" encoding="UTF-8" ...

  4. win 2012 修改盘符

           开始--运行   diskmgmt.msc    ........

  5. CodeForces 710A King Moves(水题-越界问题)

    题目链接:http://codeforces.com/problemset/problem/710/A 题目大意:在一个棋盘中给出一个位置,判断该位置周围8个点还有几个点可以摆放棋子. AC代码解释解 ...

  6. C#----GDI+画图的一些注意和细节

    画线: 在矩形rect(0,0,20,20)中的位置Point(0,10),Point(20,10)画线,也就是在矩形的中间画线,线的宽度是20的话,会发现正好线会把矩形占满,说明画线不是向下或者向上 ...

  7. 安装php时的配置选项

    ./configure --prefix=/home/samba/anthony/web --enable-mbstring --enable-fastcgi --enable-fpm --with- ...

  8. DX9资源管理

    http://www.cnblogs.com/cxrs/archive/2013/04/03/D3DResourceManager.html http://kasicass.blog.163.com/ ...

  9. ecshop循环foreach,iteration,key,index

    转载: 最近刚接触ecshop不久,感觉是非常的强大,做商城网站,整个流程都差不多搞好了,就是支付流程要自己完善完善,不过也有不足,文章功能还不够好. 通过几天的应用,总结出了ec模版中foreach ...

  10. Docker Compose to CoreOS

    taken from https://docs.docker.com/compose/install/ the only thing is that /usr is read only, but /o ...