【发布时间】:2014-08-08 09:43:02
【问题描述】:
你好,我有这样的网络掩码,f.e. 255.128.0.0,它是正确的网络掩码,我需要检查它。
int s;
struct in_addr ipvalue;
s = inet_pton(AF_INET, argv[1], &ipvalue);
如果我打印s 我看到33023 二进制形式的女巫是00000000.00000000.10000000.11111111,但这不等于我的输入网络掩码,那么我如何检查我的网络掩码是否正确?现在我通过比较十进制形式的网络掩码和for (int i = 31; i >=0; i--) sm |= (1 << i);来检查它
谢谢。
【问题讨论】:
-
在此上下文中定义“正确”。你是什么意思“不等于我的输入IP”?网络掩码不应等于任何 ip。
-
我的意思是网络掩码,正确的是所有
1位相互跟随,我的意思是,网络掩码不能是10.0.0.1 -
但是网络掩码可以是 255.128.0.0。因此,您输出网络掩码可能就像它只是一个正常数字一样可能是这里的问题。该网络掩码更好地表示为 11111111.10000000.00000000.00000000
-
是的,但 inet_pton 会返回通配符符号
标签: c network-programming netmask