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。
(每次都是这样)
太奇怪了,怎么回事呢?
展开
 我来答
冲浪网站优化
高粉答主

推荐于2016-07-11 · SEO资深专家,互联网知名专家。
冲浪网站优化
采纳数:10812 获赞数:90554

向TA提问 私信TA
展开全部
有几种方法获取本机局域网地址和网络地址。
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 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto... 点击进入详情页
本回答由Storm代理提供
Iron_Feet
推荐于2016-09-06 · TA获得超过1488个赞
知道小有建树答主
回答量:211
采纳率:0%
帮助的人:295万
展开全部
你的机子安装了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);
}

参考资料: http://msdn.microsoft.com/en-us/library/ttw7t8t6(VS.80).aspx

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友962e86c
2008-12-04
知道答主
回答量:14
采纳率:0%
帮助的人:0
展开全部
AddressList[0]是系统试着的ip地址,AddressList[1]是你通过拨号上网获取的地址 。下次编程的时候用AddressList[1]记得拨号 。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
称马你0M
高粉答主

2020-12-23 · 繁杂信息太多,你要学会辨别
知道答主
回答量:22.3万
采纳率:8%
帮助的人:1.1亿
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
friskyang
2008-12-04 · TA获得超过503个赞
知道小有建树答主
回答量:367
采纳率:0%
帮助的人:175万
展开全部
关注
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式