【问题标题】:Get ip address of computer on network c++获取网络c ++上计算机的IP地址
【发布时间】:2014-04-15 18:28:09
【问题描述】:

我正在尝试在 Windows 中制作一个 C++ 程序,它将网络上的所有 IP 地址输出到一个文本文件,但我无法在线找到任何对网络上其他计算机有用的东西。我想出了如何查询注册表并找到本地 ip,但我什至不知道从哪里开始找到其他 ip 地址。我不想要复制粘贴千篇一律的代码,因为我想了解它是如何工作的,所以如果我能获得一个链接或一本书来指导我朝着正确的方向前进,那就太好了。

【问题讨论】:

  • 注意符合 BSD 的 socket API ...

标签: c++ networking ip-address


【解决方案1】:

您到底出于什么目的想要获得这些 IP?

我怀疑您正在寻找的是一种获取给定子网中所有可能 IP 的方法,例如 IPv4,这可以很简单地完成。您只需获取机器或路由器的 IP 地址,并使用按位与对其应用子网掩码。 (例如,192.168.1.20 & 255.255.255.0 = 192.168.1.0,称为基址或网络地址)。该网络中的有效主机基本上是子网掩码中为零的所有位(上例中为 255)。这意味着192.168.1.0 - 192.168.1.255范围(不包括,因为网络地址和广播地址不是网络中主机的有效IP地址)是主机的有效IP地址。

除了路由器之外,网络上的任何机器都没有真正可靠的方法来获取关于这些地址中的哪些地址正在使用的特定信息,因为网络上机器之间的交互是自愿的,而不是隐含的。然而,大多数机器通常都运行某种协议,使它们能够相互发现,以实现打印机和文件共享等目的。

您可以尝试 ping 网络中每个可能的主机地址,或进行端口扫描,或使用他们可能知道的某种协议与他们交谈。或者,您可以使用具有已知协议的广播地址来要求网络上的所有机器向您报告,如果它们正在运行一些使用该协议的软件,它们将使用自己的地址进行响应。

【讨论】:

  • 谢谢,这正是我想要的。有没有办法查询路由器并要求。我不想陷入太疯狂的事情,所以如果没有一个相对简单的答案,请告诉我应该寻找什么样的书来学习这样的东西。
猜你喜欢
  • 2011-11-04
  • 2011-06-12
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多