读书人

c#怎么取到 win7 机器的 32位ip地址呢

发布时间: 2012-05-22 18:18:54 作者: rapoo

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

读书人网 >C#

热点推荐