【问题标题】:C# Get IP assigned by routerC#获取路由器分配的IP
【发布时间】:2014-06-12 16:11:22
【问题描述】:

我不知道我是否只是没有使用正确的关键字进行搜索,我希望能够找到由路由器分配的本地计算机的 IP 地址。

我正在使用:

IPHostEntry host;
host = Dns.GetHostEntry(Dns.GetHostName());

foreach(IPAddress ip in host.AddressList)
{
   if(ip.addressfamily.tostring() == "InterNetwork")
   {
      return ip;
   }
}

问题是我有多个 InterNetwork ip 地址,因为我使用虚拟服务,所以我需要能够识别哪个是由我的路由器分配的。

【问题讨论】:

  • 这个问题的答案应该涵盖了你的大部分选择:stackoverflow.com/questions/1069103/…
  • 为什么不与枚举 System.Net.Sockets.AddressFamily.InterNetwork 进行比较?
  • 我把它改成了那个,没有改变任何东西
  • 不,不应该,只是好奇是否有原因:)

标签: c# networking ip-address router


【解决方案1】:

环回怎么样?

if (IPAddress.IsLoopback(ip)) return ip; //localhost

或者尝试ping本地机器

Ping pingSender = new Ping ();
IPAddress address = IPAddress.Loopback;
PingReply reply = pingSender.Send (address);
if (reply.Status == IPStatus.Success){..}

这可能对你有帮助

Showing The External IP-Address In C#

【讨论】:

  • 这仍然没有挑出路由器分配的IP地址
  • 我不知道那是什么问题,你想知道你的路由器面向互联网的IP地址吗?在大多数情况下,ips 集合中的第一个 ip 是路由器的外部接口
  • 我想我找到了解决方案,我会在进行几次测试后将其发布为答案,看看它是否合法。将使用stackoverflow.com/questions/4553453/how-to-get-ip-address-in-c 作为解决方案
猜你喜欢
  • 2013-05-07
  • 2013-02-16
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 2011-09-25
  • 1970-01-01
  • 2020-12-15
相关资源
最近更新 更多