⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pingtest.cpp

📁 用于测试网络通讯连接的简单封装类,简单易用,看即会.
💻 CPP
字号:
//版权:OVL
//版本号:1.0
//生成日期:2006年6月13日
//作者:陈卓
//模块目的/功能:通过调用系统的ping指令检测网络是否连通
//主要函数:Test(string ip) 返回测试值
//          GetLineNum(FILE* fp) 返回测试结果文本字符数

#include "StdAfx.h"
#include ".\pingtest.h"
#include <stdio.h>
#include <string.h>
#include <process.h>

#define PING_RESULT 46  //ping通过结果的字符数
#define MAX_LINE_LENGHT 80  //一行最大字符数

//构造函数,目的:构造PingTest对象
//输入参数:无
//输出参数:无
//返回值:无
//调用关系:无
PingTest::PingTest(void)

{
}

//析构函数,目的:析构PingTest对象
//输入参数:无
//输出参数:无
//返回值:无
//调用关系:无
PingTest::~PingTest(void)
{
}

//测试函数
//目的:测试对象中ip地址能否连接
//输入参数:string ip用于保存ip地址
//输出参数:无
//返回值:如果能连接则返回TRUE,否则返回FALSE
//调用关系:调用类私有函数GetLineNum()以返回测试结果字符数
bool PingTest::Test(CString ip)
{
    //第一步:执行ping命令生成c:\ping.txt
	system("ping " + ip + " > c:\\ping.txt");

    //第二步:读取ping.txt中的测试结果字符串字符数
    FILE* fp;   //用于打开ping.txt
	int len;    //ping.txt中测试结果的长度
    if((fp = fopen("c:\\ping.txt","r"))==NULL) //打开ping.txt以便读入测试结果
    {
	    printf("cannot open ping.txt\n");//不能打开文件
		return false;
	}
    GetLineNum(fp);
    GetLineNum(fp);
    GetLineNum(fp);
	len=GetLineNum(fp);//读取测试结果第四行字符数
	fclose(fp);

	//第三步:检测并返回测试结果
	if (len < PING_RESULT)//小于ping通过结果的字符数就是ping不通
    {
        return false;//测试失败!
    }else{
        return true;//测试成功!
    }
}

//内部私有函数
//目的:返回测试结果文本的字符数
//输入参数:FILE* fp表示字符所在的文件
//输出参数:无
//返回值:文件中测试结果文本的字符数
//调用关系:无
int PingTest::GetLineNum(FILE* fp)
{
	int ch = fgetc(fp);
    int nIndex = 0;   //记录本行字符数

    //如果文件未结束且读到的字符不是'\n'且未达到行最大字符数,就继续读入字符
    while(!feof(fp) && (ch != '\n') && (nIndex < MAX_LINE_LENGHT)) 
    {
        nIndex++;    //计数测试结果所在的行
        ch = fgetc(fp);
    }
	return nIndex;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -