如果读IP的话,客户端用ADSL重启后,IP就换了一个局域网内的用户怎么办呀!先谢谢了!
解决方案 »
- 求助!!!批量打印水晶报表(获取打印机问题)~~急急急~~~~~
- 还可以输入多少个字符,怎么改变颜色
- 两个gridview控件在一个页面里,分别用AccessDataSource1和AccessDataSource2绑定,为什么只能显示一个gridview的数据
- 有关Asp.net 页面打印的问题
- 编辑器问题
- RadioButtonList 的求助。
- 如何去掉超链接?
- ajaxpro.2的问题,很急,大家帮帮忙
- 删除文件夹出现的问题,帮忙解决.
- 求支持asp.net2.0的虚拟空间,速度要快一些的(要货真价实的),打广告的别进入来
- 急救,各位大虾,请教关于要关闭用jmail收邮件的问题
- asp.net中在datagrid里直接对记录修改,删除。望高手指点。
http://community.csdn.net/Expert/topic/3393/3393163.xml?temp=4.156131E-02
http://community.csdn.net/Expert/topic/3393/3393163.xml?temp=4.156131E-02这个贴子我发布的, 找了半天, 只能读到本机的, 所以这回又来发了,哈哈, 还是谢谢你!兄弟也是没办法了
[DllImport("Iphlpapi.dll")]
public static extern int SendARP(Int32 dest,Int32 host,ref IntPtr mac,ref IntPtr length);
[DllImport("Ws2_32.dll")]
public static extern Int32 inet_addr(string ip);
}//调用dll的类 void mac()
{
Int32 ldest= Win32.inet_addr(Request.UserHostAddress);//目的地的ip
Int32 lhost=Win32.inet_addr("190.10.51.5");//本地的ip
try
{
Byte[] macinfo=new Byte[6];
Int32 length=6;
IntPtr mac=new IntPtr(macinfo[0]);
IntPtr len=new IntPtr(6);
int ii=Win32.SendARP(ldest,lhost, ref mac, ref len);
ip+="**mac地址:"+mac.ToString();
}
catch(Exception err)
{
ip+="";
}
}//mac
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "nbtstat.exe";
psi.RedirectStandardInput = false;
psi.RedirectStandardOutput = true;
psi.Arguments = "-A " + strClientIP;
psi.UseShellExecute = false;
Process ps = Process.Start(psi);
string strEnd = ps.StandardOutput.ReadToEnd();
ps.WaitForExit();
string[] strs = strEnd.Split('\n');
foreach(string s in strs)
{
if(s.Trim().ToLower().IndexOf("mac address") != -1)
{
string strTemp = s.Substring(s.IndexOf("Address =") + 10);
Response.Write(strTemp);
}
}
Response.End();
using System.Collections;
using System.Management;namespace ArLi.CommonPrj
{
public class GetOfMACAddr
{
public GetOfMACAddr()
{
} /// <summary>得到网卡 MAC 地址</summary>
/// <returns>返回地址数组,字符类型</returns>
/* 例: ArrayList myAddr = ArLi.CommonPrj.GetOfMACAddr.GetIt();
for (int i=0; i<myAddr.Count; i++) MessageBox.Show(myAddr[i].ToString());
*/
public static ArrayList GetIt() {
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
ArrayList strArr = new ArrayList();
//网卡数
foreach(ManagementObject mo in moc) {
if((bool)mo["IPEnabled"]) {
strArr.Add(mo["MacAddress"].ToString().Replace(":",""));
}
mo.Dispose();
} return strArr;
}
}
}
下面修改过的C#代码已验证通过(未将网络字节顺序转换为主机字节顺序): [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); static private Int64 getRemoteMAC(string localIP, string remoteIP)
{
Int32 ldest= inet_addr(remoteIP); //目的地的ip
Int32 lhost= inet_addr(localIP); //本地服务器的ip try
{
Int64 macinfo = new Int64();
Int32 len = 6;
int res = SendARP(ldest,0, ref macinfo, ref len);
return macinfo;
}
catch(Exception err)
{
Console.WriteLine("Error:{0}",err.Message);
}
return 0;
} 至于第二个问题,在标准网络协议下,ARP包是不可能跨网段传输的,故想通
过ARP协议是无法查询跨网段设备MAC地址的。
<HTML>
<HEAD>
<TITLE>WMI Scripting HTML</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<SCRIPT language=JScript 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);
</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><META content="MSHTML 6.00.2800.1106" name=GENERATOR></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><FORM id=formfoo name=formbar action=NICPost.asp method=post>
<INPUT value=00:05:5D:0E:C7:FA name=txtMACAddr>
<INPUT value=192.168.0.2 name=txtIPAddr>
<INPUT value=typ name=txtDNSName>
</FORM>
</BODY>
</HTML>
<HEAD>
<TITLE>WMI Scripting HTML</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<SCRIPT language=JScript 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);
</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><META content="MSHTML 6.00.2800.1106" name=GENERATOR></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><FORM id=formfoo name=formbar action=NICPost.asp method=post>
<INPUT value=00:05:5D:0E:C7:FA name=txtMACAddr>
<INPUT value=192.168.0.2 name=txtIPAddr>
<INPUT value=typ name=txtDNSName>
</FORM>
</BODY>
</HTML>
<HTML>
<HEAD>
<TITLE>WMI Scripting HTML</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<SCRIPT language=JScript 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);
</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><META content="MSHTML 6.00.2800.1106" name=GENERATOR></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><FORM id=formfoo name=formbar action=NICPost.asp method=post>
<INPUT value=00:05:5D:0E:C7:FA name=txtMACAddr>
<INPUT value=192.168.0.2 name=txtIPAddr>
<INPUT value=typ name=txtDNSName>
</FORM>
</BODY>
</HTML>