【问题标题】:Storing result in a file in C++将结果存储在 C++ 中的文件中
【发布时间】:2014-02-24 12:55:01
【问题描述】:

我正在编写一个程序来 ping 一个 IP。 我必须 ping 1000s 的特定地址。 现在我想将 TTL 保存到一个文件中以绘制它的直方图。 我该怎么做?如何将 TTL 保存到文件中?

这是我尝试过的:

#include "stdafx.h"
#include "iostream"
#include "string.h" 
#include "stdlib.h"
#include "conio.h"
#include <string>
#include <windows.h>
#include <iostream>
#include <fstream>   

using namespace std;
static string host;
static string ping_again;

void ping()
{   
  cout << "Host: ";
  host="www.yahoo.com";
  system (("ping " + host).c_str);
}

int main()
{
  ping(); 
  return(0);
}

【问题讨论】:

    标签: c++ file ip ping


    【解决方案1】:

    您已选择使用system() 直接运行 ping 可执行文件,而您缺少的是命令输出的捕获,因此您可以解析 TTL。

    可以使用popen 而不是system 来捕获标准输出,但是,从您的包含列表来看,您似乎是在Windows 上,这就是它变得复杂的地方。查看这个问题:What is the equivalent to Posix popen() in the Win32 API?,请注意,如果您的应用程序是控制台应用程序,您可以调用 popen,否则答案会将您引向 MSDN 示例,该示例痛苦地详细说明了您应该如何调用进程并重定向其输入/输出。

    一旦您重定向并捕获输出,您应该解析字符串以提取 TTL。请注意,ping.exe 的输出可能对于不同版本的 Windows 是不同的,并且您几乎无法控制您实际调用的 ping.exe

    另一种更好的方法是直接使用 ICMP API,而不是在运行应用程序的主机上调用 ping 可执行文件。以IcmpSendEcho 开头,注意它在回复结构中提供了 RTT。

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 2015-07-19
      • 1970-01-01
      • 2014-09-16
      • 2020-01-22
      • 1970-01-01
      • 2018-07-11
      • 2021-10-08
      • 1970-01-01
      相关资源
      最近更新 更多