因此,我已经实现了一个系统调用,它应该给我一个给定网络接口的DNS服务器(作为变量,即我的代码中的 "interface")。
strcpy(str, "netsh interface ipv4 show dnsservers ");
strcat(str, interface);
system(str);
现在我的问题是:你建议用哪种方式来提取这些DNS服务器,并且能够比较它们的速度?我有下面的函数来提取平均速度为整数,所以两个服务器之间的比较应该很容易,但事情是我遇到的DNS没有固定的数量。
int average_speed(const char* ip)
{
const char* const Delim = "Average = ";
printf("\n Extracting average %s", ip);
char cmd[64];
sprintf(cmd, "ping %s", ip);
FILE* p = _popen(cmd, "r");
char line[256];
while (fgets(line, sizeof(line), p))
{
char* s = NULL;
if ((s = strstr(line, Delim)) != NULL)
{
_pclose(p);
return atoi(s + strlen(Delim));
}
}
_pclose(p);
return 0;
}
绝对不要使用 ping
要做到这一点。
ping
是一个错误的工具,几乎所有类型的故障排除。
如果你想根据名字服务器的速度来排序,你只有一件事要做:查询他们,对于DNS查询,看看他们的回复速度。
这是唯一有意义的事情。所以你需要在你的编程语言中找出如何在最底层进行DNS查询,并且能够对它们进行计时。
然后你才开始从头开始,得出其他的问题来解决。