C++ 如何从子网掩码中知道要搜索的IP地址?

C++ 如何从子网掩码中知道要搜索的IP地址?,c++,windows,visual-studio,ip-address,subnet,C++,Windows,Visual Studio,Ip Address,Subnet,我正在写一个通过局域网搜索的简单程序,这个程序几乎没有选择如何搜索(检查单个IP地址,检查主机名,检查本地机器子网…等等) 我被困在“检查本地机器子网”(至少我认为这可能是个问题) OK,这里可能会有问题,所以我想知道是否有一种方法来处理C++。p> 当我使用getadapteraddresses()获取IP地址和子网掩码以便搜索本地机器子网时,我的疑问是如果getadapteraddresses()返回子网-255.255.254.0和IP-192.160.5.10会怎么样。第一步是搜索19

我正在写一个通过局域网搜索的简单程序,这个程序几乎没有选择如何搜索(检查单个IP地址,检查主机名,检查本地机器子网…等等)

我被困在“检查本地机器子网”(至少我认为这可能是个问题)

OK,这里可能会有问题,所以我想知道是否有一种方法来处理C++。p> 当我使用

getadapteraddresses()
获取IP地址和子网掩码以便搜索本地机器子网时,我的疑问是如果
getadapteraddresses()
返回子网-255.255.254.0和IP-192.160.5.10会怎么样。第一步是搜索192.168.5.0-255,但下一步,我应该搜索192.168.6.0-255还是192.168.4.0-255

如果C++中有这样的方法,任何提示都会很棒。


谢谢:)

您可以使用以下内容计算所有地址

int count = (~netmask) & 0x7FFFFFFF;
int network = ip_address & netmask;
for (int i=1; i<count; i++) {
    int addr = network + i;
    ...
}
int count=(~netmask)&0x7FFFFFFF;
int网络=ip地址和网络掩码;

对于(int i=1;iDude,我认为您的值是错误的。192.168.5.x不在255.255.254.0的范围内。此子网掩码允许从192.168.0.0到192.168.1.255的地址。如果5是主机部分,则掩码必须是255.255.248.0。

这不是路由器为您做的吗?@πάνταῥεῖ 我的目标是,这样我就可以启动程序,选择通过本地机器子网进行搜索,程序会给我所有活动的IP地址(还有更多的信息MAC地址、主机名等等)拿子网掩码和你的IP,然后,或者用这个结果,掩码中的所有位的组合都是零。这些都是当前子网中的地址。我没有得到那个值。我关心的是,如果我在这样的例子中遇到什么。嗯,你怎么解释呢,我家的子网是255.255.255.0,我的IP地址是255.255.0是192.168.5.20吗?完全有效,您的子网范围是:192.168.5.0->192.168.5.255。192.168.5.0和192.168.5.255在子网中,但不是有效地址,第一个是网络地址,第二个是广播地址。@RichardCriten我知道这一点,让我们不要离开这条路,我的问题是其他问题?网络掩码是子网?如果是,当执行
(~netmask)和0x7FFFFFFF
时,网络掩码应显式为十六进制。当执行
ip\u地址和网络掩码时,ip\u地址应采用何种格式?@Genato:我假设网络掩码和ip\u地址都是32位无符号数字
(b1)