C#.NET 如何获得本机IP地址?
我用MSDN上的代码:stringstrHostName=Dns.GetHostName();//得到本机的主机名IPHostEntryipEntry=Dns.GetHo...
我用MSDN上的代码:
string strHostName = Dns.GetHostName(); //得到本机的主机名
IPHostEntry ipEntry = Dns.GetHostEntry(strHostName); //取得本机IP
string ip = ipEntry.AddressList[0].ToString(); //假设本地主机为单网卡
结果得到ip为:2002:b00:11e:b00:11e
我把第三句的AddressList[0]改为AddressList[1]后,IP就正常了。
但我程序调试个2、3次后,就会说我的AddressList[1]数组越界了,再改为AddressList[0]后,IP又正常了。以后就一直用AddressList[0],直到下次打开VS2005。
(每次都是这样)
太奇怪了,怎么回事呢? 展开
string strHostName = Dns.GetHostName(); //得到本机的主机名
IPHostEntry ipEntry = Dns.GetHostEntry(strHostName); //取得本机IP
string ip = ipEntry.AddressList[0].ToString(); //假设本地主机为单网卡
结果得到ip为:2002:b00:11e:b00:11e
我把第三句的AddressList[0]改为AddressList[1]后,IP就正常了。
但我程序调试个2、3次后,就会说我的AddressList[1]数组越界了,再改为AddressList[0]后,IP又正常了。以后就一直用AddressList[0],直到下次打开VS2005。
(每次都是这样)
太奇怪了,怎么回事呢? 展开
7个回答
展开全部
有几种方法获取本机局域网地址和网络地址。
1、 获取本机局域网地址:
使用IPHostEntry
static string
GetLocalIp()
{
string
hostname =
Dns.GetHostName();
IPHostEntry localhost =
Dns.GetHostByName(hostname);
IPAddress localaddr =
localhost.AddressList[0];
return localaddr.ToString();
}
2、获取本机网络ip地址:
通过向网站http://www.ip138.com/ip2city.asp发送webrequest,分析返回的数据流
try
{
string strUrl = "http://www.ip138.com/ip2city.asp"; //获得IP的网址
Uri uri = new
Uri(strUrl);
WebRequest webreq =
WebRequest.Create(uri);
Stream s = webreq
.GetResponse().GetResponseStream();
StreamReader sr = new StreamReader(s,
Encoding.Default);
string all = sr.ReadToEnd(); //读取网站返回的数据 格式:您的IP地址是:[x.x.x.x]
int i = all.IndexOf("[") +
1;
string tempip = all.Substring(i,
15);
string ip = tempip.Replace("]", "").Replace(" ",
"").Replace("<",""); //去除杂项找出ip
return ip;
}
1、 获取本机局域网地址:
使用IPHostEntry
static string
GetLocalIp()
{
string
hostname =
Dns.GetHostName();
IPHostEntry localhost =
Dns.GetHostByName(hostname);
IPAddress localaddr =
localhost.AddressList[0];
return localaddr.ToString();
}
2、获取本机网络ip地址:
通过向网站http://www.ip138.com/ip2city.asp发送webrequest,分析返回的数据流
try
{
string strUrl = "http://www.ip138.com/ip2city.asp"; //获得IP的网址
Uri uri = new
Uri(strUrl);
WebRequest webreq =
WebRequest.Create(uri);
Stream s = webreq
.GetResponse().GetResponseStream();
StreamReader sr = new StreamReader(s,
Encoding.Default);
string all = sr.ReadToEnd(); //读取网站返回的数据 格式:您的IP地址是:[x.x.x.x]
int i = all.IndexOf("[") +
1;
string tempip = all.Substring(i,
15);
string ip = tempip.Replace("]", "").Replace(" ",
"").Replace("<",""); //去除杂项找出ip
return ip;
}
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto...
点击进入详情页
本回答由Storm代理提供
展开全部
你的机子安装了IPv6协议,所以2002:b00:11e:b00:11e 是你的IPV6的地址。
你可以通过以下代码:你可以通过foreach来达到AddressList的元素个数无关性,得到所有的IP地址~然后通过一些筛选来得到选出你需要的那个
string strHostName = Dns.GetHostName(); //得到本机的主机名
IPHostEntry ipEntry = Dns.GetHostEntry(strHostName); //取得本机IP
foreach (System.Net.IPAddress ip in ipEntry.AddressList)
{
Console.WriteLine(ip);
}
你可以通过以下代码:你可以通过foreach来达到AddressList的元素个数无关性,得到所有的IP地址~然后通过一些筛选来得到选出你需要的那个
string strHostName = Dns.GetHostName(); //得到本机的主机名
IPHostEntry ipEntry = Dns.GetHostEntry(strHostName); //取得本机IP
foreach (System.Net.IPAddress ip in ipEntry.AddressList)
{
Console.WriteLine(ip);
}
参考资料: http://msdn.microsoft.com/en-us/library/ttw7t8t6(VS.80).aspx
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
AddressList[0]是系统试着的ip地址,AddressList[1]是你通过拨号上网获取的地址 。下次编程的时候用AddressList[1]记得拨号 。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关注
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询