c#如何取到 win7 机器的 32位ip地址呢?我的代码取到的不是 32 位的呀?
c#如何取到 win7 机器的 32位ip地址呢?我的代码取到的不是 32 位的呀?
我的 ip地址字段,宽度是 varchar(15),但是用下面的代码,
对于win7的机器,取到的是 fe80::d09e:56b9:eb8a:db5%11
我如何得到 win7 的32位 ip地址呢?
我在这台win7上,用vb6程序就可以取到 32位的ip地址,
但是用 c# 如何实现呢?
以下的我的代码,如何修改呢?
- C# code
//写入登录日志 public void DengluRiZhi() { string hostname = System.Net.Dns.GetHostName(); //主机 System.Net.IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(hostname);//网卡IP地址集合 string IP = ipEntry.AddressList[0].ToString();//取一个IP string strsql = ""; command = new SqlCommand(); command.Connection = mydb.conn; strsql = "insert MIS登录信息 (程序名,登录ip,登录机器名,登录人编号,登录人姓名,登录时间) "; strsql += "select '成品管理','" + IP + "','" + hostname + "','" + struserid + "','" + strusername + "',getdate()"; command.CommandText = strsql; command.ExecuteNonQuery(); }
[解决办法]
http://hi.baidu.com/jx89/blog/item/1de52865b3e35628aa184c79.html
[解决办法]
Windows7内置了IPv6的程序,并将IPv6地址设为第一个地址。
要想通用,建议可以通过获取Windows的内核版本号来确定
if (System.Environment.OSVersion.Version.Major >= 6)//6为win7的主版本号
string IP = ipEntry.AddressList[1].ToString()
else
string IP = ipEntry.AddressList[0].ToString()
没用过Vista,不知道它里面的情况。
[解决办法]
string sIp = "";
ManagementClass oMc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection oMoc = oMc.GetInstances();
foreach (ManagementObject oMo in oMoc)
{
if ((bool)oMo["IPEnabled"] == true)
{
string[] IPAddresses = (string[])oMo["IPAddress"];
if (IPAddresses.Length > 0)
sIp = IPAddresses[0];
break;
}
}