读书人

C#显示本机IP和MAC地址的代码!该怎么处

发布时间: 2012-01-02 22:40:04 作者: rapoo

C#显示本机IP和MAC地址的代码!
下面这段程序为什么不能显示IP地址呢????
编译运行后会在textBox1里显示System.String[],
请问:这是哪里错了呀????????

ManagementClass mc;
mc = new ManagementClass( "Win32_NetworkAdapterConfiguration ");
ManagementObjectCollection moc = mc.GetInstances();
//MessageBox.Show(moc.Count.ToString());
foreach (ManagementObject mo in moc)
{
if (mo[ "IPEnabled "].ToString() == "True ")
{
textBox1.Text += mo[ "IPAddress "].ToString();
textBox2.Text += mo[ "MACAddress "].ToString();
}
}


[解决办法]
获取本机IP
string strHostIP= " ";
IPHostEntry oIPHost=Dns.Resolve(Environment.MachineName);
if(oIPHost.AddressList.Length> 0)
strHostIP=oIPHost.AddressList[0].ToString();
获取MAC
using System.Management;

//get the MAC address

ManagementClass mc=new ManagementClass( "Win32_NetworkAdapterConfiguration ");

ManagementObjectCollection moc=mc.GetInstances();

string[] MacAddress=new string[2];

int ii=0;

foreach(ManagementObject mo in moc)

{

if((bool)mo[ "IPEnabled "]==true)

{

MacAddress[ii]=mo[ "MacAddress "].ToString();

ii++;

}

mo.Dispose();

}
[解决办法]
你错在 if (mo[ "IPEnabled "].ToString() == "True ")
这行
if (mo[ "IPEnabled "].ToString() == "true ")
就对了,建议不要textBox1.Text +=
先定义个String ,最后在赋值

[解决办法]
将其改为
ManagementClass mc;
mc = new ManagementClass( "Win32_NetworkAdapterConfiguration ");
ManagementObjectCollection moc = mc.GetInstances();
//MessageBox.Show(moc.Count.ToString());
foreach (ManagementObject mo in moc)
{
if (mo[ "IPEnabled "].ToString() == "True ")


{
textBox1.Text = (mo[ "IPAddress "] as String[])[0];
textBox2.Text = mo[ "MACAddress "].ToString();
}
}
[解决办法]
你通过mo[ "IPAddress "]得到的是IP地址数组,为string[]。而不是string。
你让mo[ "IPAddress "].ToString()自然就错了。
[解决办法]
textBox1.Text += mo[ "xx "].ToString();
只能获MAC地址
[解决办法]
textBox1.Text = (mo[ "IPAddress "] as String[])[0];
textBox2.Text += mo[ "MACAddress "].ToString();
[解决办法]
IPHostEntry ipEntry = DNS.GetHostByName ();
IPAddress [] IpAddr = ipEntry.AddressList;
for (int i = 0; i < IpAddr.Length; i++){
Console.WriteLine ( "IP Address {0}: {1} ", i, IpAddr[i].ToString ());

}
这样最简单
[解决办法]
#region 获取计算机信息
private void GetComputerInfo(out string hostname,out string mac)
{
hostname = Dns.GetHostName();

ManagementClass mc = new ManagementClass( "Win32_NetworkAdapterConfiguration ");
ManagementObjectCollection moc = mc.GetInstances();

mac = " ";
foreach(ManagementObject mo in moc)
{
if((bool)mo[ "IPEnabled "])
{
mac += mo[ "MacAddress "].ToString().Replace( ": ", "- ");
}
mo.Dispose();
}
}
#endregion

读书人网 >C#

热点推荐