关于Qt中如何获取ping的内容

zp_lhy 2016-05-02 06:20:27
想写一个关于Qt中ping完网络后,如何获取输出的内容数据,用QProcess获取到输出的内容,但是不知道怎么直接获取数据,
如下图:
怎么获取那些红色框内的数据。第一次提问题,求指教!希望各位大神能够多多帮忙,谢谢!
...全文
557 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
encoderlee 2016-05-04
  • 打赏
  • 举报
回复
其实就是字符串的查找和截取问题
zp_lhy 2016-05-03
  • 打赏
  • 举报
回复
根据你们提供的思路在Qt上找到相应的函数,最后基本上是可以实现提取到想要的内容!第一次提问,很感谢大家的热心帮助,希望以后能够多多指教!
赵4老师 2016-05-03
  • 打赏
  • 举报
回复
仅供参考:
#include <windows.h>
#include <stdio.h>
#include <string.h>
char YN(int k) {
    FILE *f;
    char fn[40];
    char ln[80];
    char yn;
    int n;

    yn='N';
    sprintf(fn,"d:\\ping%d.txt",k);
    f=fopen(fn,"r");
    if (NULL!=f) {
        n=0;
        while (1) {
            if (NULL==fgets(ln,80,f)) break;//
            if (strstr(ln,"ms ")) {
                yn='Y';
                break;//
            }
            n++;
            if (n>=4) break;//
        }
        fclose(f);
    }
    return yn;
}
void main(int argc,char **argv) {
    char cmdstr[256];
    int i;
    int IP[3];
    char c;

    if (argc<2) {
    USAGE:
        printf("Usage example:\n    %s 192.168.60.\nto test 192.168.60.1-254\n",argv[0]);
        return;
    }
    if (4==sscanf(argv[1],"%d.%d.%d%c",&IP[0],&IP[1],&IP[2],&c)) {
        if (0<=IP[0] && IP[0]<=255
         && 0<=IP[1] && IP[1]<=255
         && 0<=IP[2] && IP[2]<=255
         && '.'==c) {
            for (i=1;i<255;i++) {
                sprintf(cmdstr,"cmd /c ping %s%d -n 1 -w 1000 >d:\\ping%d.txt",argv[1],i,i);
                WinExec(cmdstr,SW_HIDE);
            }
            Sleep(3000);
            for (i=1;i<255;i++) {
                printf("%c %s%d\n",YN(i),argv[1],i);
            }
            Sleep(3000);
            WinExec("cmd /c del /q d:\\ping*.txt",SW_HIDE);
        } else goto USAGE;
    } else goto USAGE;
}
zp_lhy 2016-05-02
  • 打赏
  • 举报
回复
有没有实际的例子,可以了解一下,谢谢!
encoderlee 2016-05-02
  • 打赏
  • 举报
回复
比如要获取延时值 可以用string::find找到"时间<" 然后从此位置开始往后找"ms" 然后用string::substr把"1"提取出来 再用atoi()转换成数字 如果要获取TTL值的话 可以用string::find找到"TTL=" 然后从此位置开始往后找"\n" 然后用string::substr把"64"提取出来 再用atoi()转换成数字 其它同理

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧