2013-04-22 54 views
0

不知道我缺少什么。 我试图确定一个IP地址172.27.12.32的IP地址20.0.0.0和255.255.252.0的范围落在比较2在C中的字符串格式的IP地址

什么我做的是以下几点:

std::string one("200.0.0.0"); 
std::string two("172.27.12.32"); 
std::string three("255.255.255.255"); 

long one_addr = inet_addr(one.c_str()); 
long two_addr = inet_addr(two.c_str()); 
long three_addr = inet_addr(three.c_str()); 

one_addr等于200 two_addr等于537664428 three_addr等于4294967295

two_addr大于one_addr但172.27.12.32不在范围如果最小的IP地址是200.0.0.0

如何确定172.27.12.32是否不在200.0.0.0和255.255.255.255的范围内?

+2

将c标签更改为C++,给定使用'std :: string'。 – hmjd 2013-04-22 21:53:13

+1

为什么我有一种感觉,你有任务错误。我想你会被问到IP地址1是否在IP地址2内掩码3 – evilruff 2013-04-22 21:54:56

+0

全部3个IP地址 – reza 2013-04-22 21:56:05

回答

0

inet_addr() function返回in_addr_t结构实例:

in_addr_t inet_addr(const char *cp); 

这往往是一个typedef一个32位整数,在每个架构上并不总是很长。

在任何情况下,请考虑将20.0.0.0255.255.252.0转换为in_addr_t值。然后将这些结果与您感兴趣的价值进行比较。你会期待什么?