请问,我获取的本地IP地址为什么不对

sdr3gerf3 2012-04-22 12:50:47
IPHostEntry iph = Dns.GetHostEntry(Dns.GetHostName());
IPAddress io = iph.AddressList[0];
foreach (IPAddress ip in iph.AddressList)
{
Console.WriteLine(ip.ToString());
}
Console.ReadKey();

最后的输出结果是:
fe80::118a:2f6d:22cb:ff7d%11
2002:6ebb:37df::6ebb:37df
169.254.255.125
110.187.55.223

怎么会有4个结果呢?而且通过“好123”的IP地址查询,只有最后那个能对上,请问,是什么原因?如果在程序中需要本地IP地址,该怎么取舍呢?
...全文
678 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
anzhiqiang_touzi 2012-04-23
  • 打赏
  • 举报
回复
IPAddress[] addrIP = Dns.GetHostAddresses(Dns.GetHostName());
Console.WriteLine(addrIP[0].ToString());
色拉油 2012-04-23
  • 打赏
  • 举报
回复
霸气[Quote=引用 10 楼 的回复:]

引用楼主 的回复:
如果在程序中需要本地IP地址,该怎么取舍呢?


如果有人告诉你“写一个tcp服务监听要使用 iph.AddressList[0]”的话,你直接“喷”它好了。有个实习生告诉我某个培训学校的视频上的老师就是这样写的。

作为服务,要使用 IPAddress.Any,这是常识。
[/Quote]
TraineeFang 2012-04-23
  • 打赏
  • 举报
回复
你这里获取的有IP4和IP6 的版本,必须要判断一下,InterNetwork是IP版本4的地址。 然后在获取了IP4的地址后要一个break,不然还是会继续把IP6 的也获取了。希望对你有帮助。


IPHostEntry iph = Dns.GetHostEntry(Dns.GetHostName());
IPAddress io = iph.AddressList[0];
for (int i = 0; i < iph.AddressList.Length; i++)
{
if (iph.AddressLis[i].AddressFamily ==AddressFamily.InterNetwork)
{
string svrAddress = iph.AddressList[i].ToString();
Console.WriteLine(svrAddress.ToString());
break;
}
}
Console.ReadKey();


有什么不明白的可以在这里一起探讨一下。
风雪猛狼 2012-04-23
  • 打赏
  • 举报
回复
每个网卡都有二个地址,一个局域网地址和一个外网地址,索引号相对较小的是局域网地址
mizuho_2006 2012-04-22
  • 打赏
  • 举报
回复
通常addressList[]所得到的列表就是当前的IP地址;

如果当前是拨号上网的话addressList[0].ToString()就是

本地IP地址;addressList[1].ToString() 就是上网地址。

如果当前是使用[EnterNet 300]拨号上网的话addressList[1].ToString()

就是本地IP地址;addressList[0].ToString() 就是上网地址。

如果程序只能够检测到只有一个IP地址的话,证明当前

电脑没有在线!

mizuho_2006 2012-04-22
  • 打赏
  • 举报
回复

IPAddress[] addrIP = Dns.GetHostAddresses(Dns.GetHostName());
Console.WriteLine(addrIP[0].ToString());
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
如果在程序中需要本地IP地址,该怎么取舍呢?
[/Quote]

如果有人告诉你“写一个tcp服务监听要使用 iph.AddressList[0]”的话,你直接“喷”它好了。有个实习生告诉我某个培训学校的视频上的老师就是这样写的。

作为服务,要使用 IPAddress.Any,这是常识。
  • 打赏
  • 举报
回复
孤陋寡闻。

我的一个电脑装过VMWare虚拟,于是它就虚拟出来3个网卡,于是我的电脑仅ipv4MAC和IP地址就有5个。

我现在用的笔记本至少有4个ipv4地址,因为有4个网络适配器。一个是我的蓝牙驱动虚拟出的网卡,一个是普通rj45以太网卡适配器,一个是无线网络适配器,一个是windows虚拟WIFI适配器。

我的另外一个笔记本有更多的是适配器。

.......

不知道一台机器可以有很多ipv4地址,真是应该好好学学电脑知识了,不然连居委会的大妈都不如了。
sdr3gerf3 2012-04-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

我以前也碰到了这个问题 是因为机器开启了ipv4 ipv6 之类的东西 后来把居然把整整一大堆IP地址全部存到数据库了 没有过多去研究这个 关注这个问题 也许自己的问题也会在这个帖子里解决!
[/Quote]
哦...............
orochiheart 2012-04-22
  • 打赏
  • 举报
回复
我以前也碰到了这个问题 是因为机器开启了ipv4 ipv6 之类的东西 后来把居然把整整一大堆IP地址全部存到数据库了 没有过多去研究这个 关注这个问题 也许自己的问题也会在这个帖子里解决!
rayyu1989 2012-04-22
  • 打赏
  • 举报
回复
ipv4 ipv6 局域网 公网
足球中国 2012-04-22
  • 打赏
  • 举报
回复
一个内网IP一个外网IP。
qldsrx 2012-04-22
  • 打赏
  • 举报
回复
一般本机IP用127.0.0.1或localhost,至于为啥最后一个对,因为最后一个是你拨号产生的,也就是最后产生的,先排除非IPV4格式的地址,然后取最后一个IPV4的地址即可。
老毕 2012-04-22
  • 打赏
  • 举报
回复
// 以下两个是IPv6的地址
fe80::118a:2f6d:22cb:ff7d%11
2002:6ebb:37df::6ebb:37df

// 以下两个是IPv4的地址
// 这是你本地连接的地址,估计你没有给网卡配置本地IP,所以Windows分配了一个保留地址给你的网卡

169.254.255.125
// 这是你通过PPPoE获得的公网IP
110.187.55.223

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧