1

我正在尝试编写一个执行以下操作的实用程序:

  1. 读取文件以解析 IP 地址
  2. 将从文件中解析的 IP 地址与主列表进行比较以查找丢失的 IP 地址
  3. 输出丢失的 IP 地址

什么是实施第 2 项和第 3 项的好方法?到目前为止,我正在执行以下操作以获取我从文件中解析的 IP 地址的总数:

if (strstr (line, "IP_Address=128.10.")) {
    fprintf(ofp, "%s\n", line);
    ip_addresses++; // counter for IP addresses starting with 128.10
}

我应该如何将解析的 IP 地址与我的主列表进行比较,以及在检查我的 IP 列表时如何检测丢失的 IP 地址?

4

2 回答 2

3

读取时,我会将每个 IP 地址转换为 32 位无符号整数(至少假设 IPv4,似乎是这种情况)。

然后我将它们插入向量并对其进行排序。对你的主列表做同样的事情,并用它std::set_difference来找出不同之处。

于 2013-07-02T07:01:59.437 回答
0

首先,将地址转换为无符号整数。假设您将解析后的地址保存为整数数组,代码可能如下所示:

//  If ip is 195.102.45.203, then unsigned int IP = {195, 102, 45, 203};
unsigned int identifier = 0;
identifier = ((IP[0]*255 + IP[1])*255 + IP[2])*255 + IP[3];

将所有标识符插入某个向量,对其进行排序并对主列表中的地址执行相同操作。然后检查是否有遗漏的。

于 2013-07-02T08:33:55.163 回答