
分类: 电脑/网络 >> 软件
问题描述:
我正在开发一个B/S版的营运系统,系统要求当用户通过浏览器登陆系统时,能得到用户电脑网卡的MAC地址,不知道如何能够实现
该系统是用VBNET写的一个ASPNET程序
解析:
<%
strIP = RequestServerVariables("REMOTE_ADDR")
strMac = GetMACAddress(strIP)
strHost = RequestServerVariables("REMOTE_HOST")
Function GetMACAddress(strIP)
Set = ServerCreateObject("wscriptneork")
Set sh = ServerCreateObject("wscriptshell")
shrun "%spec% /c nbtstat -A " & strIP & " > c:" & strIP & "txt",0,true
Set sh = nothing
Set fso = createobject("scriptingfilesystemobject")
Set ts = fsoopentextfile("c:" & strIP & "txt")
macaddress = null
Do While Not tsAtEndOfStream
data = ucase(trim(tsreadline))
If instr(data,"MAC ADDRESS") Then
macaddress = trim(split(data,"=")(1))
Exit Do
End If
loop
tsclose
Set ts = nothing
fsodeletefile "c:" & strIP & "txt"
Set fso = nothing
GetMACAddress = macaddress
End Function
%>
<HTML>
<HEAD>
<TITLE>Say Hello To the MAC MAN</TITLE>
</HEAD>
<BODY>
<%ResponseWrite("Your IP is : " & strIP & "<BR>" & vbcrlf)%>
<%ResponseWrite("Your MAC is : " & strMac & vbcrlf)%>
</BODY>
</HTML>
后记:此程序中需要USER_用户有C盘的写入权限,也可以将文中的“C:”改为有写权限的驱动器(或目录)也可。
/// <summary>
/// 判断是否是IP地址格式 0000
/// </summary>
/// <param name="str1">待判断的IP地址</param>
/// <returns>true or false</returns>
public static bool IsIPAddress(string str1)
{
if (str1 == null || str1 == stringEmpty || str1Length < 7 || str1Length > 15) return false;
string regformat = @"^\d{1,3}[\]\d{1,3}[\]\d{1,3}[\]\d{1,3}$";
Regex regex = new Regex(regformat, RegexOptionsIgnoreCase);
return regexIsMatch(str1);
}
/// <summary>
/// 取得客户端真实IP。如果有代理则取第一个非内网地址
/// </summary>
public static string IPAddress
{
get
{
string result = StringEmpty;
result = >
复制代码 代码示例:private void ButtonIP_Click(object sender, SystemEventArgs e){ SystemNetIPAddress[] addressList = DnsGetHostByName(DnsGetHostName())AddressList;if ( addressListLength>1){ TextLIPText = addressList[0]ToString();TextSIPText = addressList[1]ToString();}else{TextLIPText = addressList[0]ToString();TextSIPText = "没有可用的连接";}}另一种获取服务器的IP地址与MAC地址的方法:复制代码 代码示例:using SystemManagement;string stringMAC = "";string stringIP = "";ManagementClass MC = new ManagementClass "Win32_NetworkAdapterConfiguration");ManagementObjectCollection MOC= MCGetInstances();foreach(ManagementObject MO in MOC){if ((bool)MO["IPEnabled"] == true){stringMAC += MO["MACAddress"]ToString();TextMACText = stringMACToString();string[] IPAddresses = (string[]) MO["IPAddress"];if(IPAddressesLength > 0)stringIP = IPAddresses[0];TextIPText = stringIPToString();}}获取客户端本机的IP地址的方法:复制代码 代码示例:using SystemNet;TextIPText=PageRequestUserHostAddress;获取客户端本机的MAC地址刚复杂一些,需要调用两个API,用ARP协议获取,但也只能获取到同网段机器的MAC,对于跨网段的得利用IP扫描或cmd中nBTstat命令获取MAC地址。
单播的MAC地址是通过ARP协议桢查询出来并缓存于ARP表中的,多(组)播的MAC地址是通过32位IP地址直接映射成48位MAC地址而得来的(会存在5位的映射偏差),而广播的MAC地址直接是48位全1。
80211桢和Ev2桢中的MAC地址产生方法是一致的,只不过在基础设施型无线网络中多了48位的BSSID地址(从而使得80211桢中的地址个数最多可达到4个),它是AP的无线接口MAC地址,无线工作站(STA)可以通过扫描AP定期(一般每秒10次以上)广播发送的信标桢(Beacon)来了解AP的MAC地址(注:无线产品禁用SSID广播并不是定期不发信标桢,而只是在信标桢中不再包含用户自定义的SSID网络名称),当然STA也可以通过主动扫描形式的广播探查请求桢(Probe Request)去获取AP的MAC地址(此时AP会先查看SSID名称是否匹配,并且MAC过滤表中是否允许连接,过滤后会用单播响应桢予以回复)。
不知我写的是否是你想要的,目前也在做无线的项目,碰巧遇见这个就回了,水平有限,希望能帮到你。
以上就是关于怎样通过Web方式获得对方的网卡MAC地址全部的内容,包括:怎样通过Web方式获得对方的网卡MAC地址、C#如何获取远程主机的的IP及MAC地址、asp.net如何获取服务器ip与mac地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)