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;
}
}