• 大小: 561KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: C/C++
  • 标签: 数据采集  

资源简介

C++ 数据采集C++ 数据采集C++ 数据采集C++ 数据采集C++ 数据采集C++ 数据采集C++ 数据采集C++ 数据采集

资源截图

代码片段和文件信息

#include “logreader.h“
#include “dmsexception.h“
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include
#include//bzero使用
#include
#include
//构造函数
LogReader::LogReader()
{
char file[]=“logins.dat“;
bzero(loginsfile255);//memset() 
memcpy(loginsfilefilestrlen(file));
}
//日志读取的主函数
void LogReader::readLogs(list *logs)
{

char backfile[255];
bzero(backfile255);
try{
backup(backfile);
list logins;
cout<<“读取上次剩余登入记录......“< readLogins(&logins);
cout<<“上次剩余数:“< list logouts;
cout<<“读取系统日志......“< readLogFile(backfile&logins&logouts);
cout<<“登入记录数:“< cout<<“匹配登入/登出数据中......“< match(&logins&logoutslogs);
cout<<“匹配剩余登入记录数:“<size()< cout<<“保存剩余登入数据......“< saveLogins(&logins);
}
catch(DMSException e)
{
throw;
}
}
//设置采集的日志文件
void LogReader::setLogfile(char *file)
{
memcpy(logfilefilestrlen(file));
}
//剩余登入记录的保存文件名
void LogReader::setLoginsfile(char *file)
{
memcpy(loginsfilefilestrlen(file));
}
//备份日志文件
void LogReader::backup(char*backfile)
{
//备份文件名 dmsyyyymmdd
//得到系统时间
time_t t=time(NULL); 
struct tm* st=localtime(&t);
sprintf(backfile“dms%04d%02d%02d%02d%02d“st->tm_year+1900st->tm_mon+1st->tm_mdayst->tm_hourst->tm_min);
string backcmd(“./backup.sh “);
backcmd+=“ wtmpx “;
backcmd+=backfile;
backcmd+=“  2>/dev/null“;
int re=system(backcmd.data());
if(re!=0)
{
throw  DMSException(“备份指令错误!“); 
}
}
//读取上次匹配剩余的登入记录
void LogReader::readLogins(list *logins)
{
//打开剩余的登入记录文件。
int fd=open(loginsfileO_RDONLY|O_EXCL);
if(fd==-1)
{
//文件不存在等原因
return;//不做任何处理
}
while(1)//循环读取记录
{
logrec log;
int re=read(fd&logsizeof(log));
if(re<=0)
{
//0 表示读取完毕 其他表示异常
close(fd);
return;//结束处理
}
logins->push_back(log);
}
}
//读取日志文件
void LogReader::readLogFile(char*backfilelist*loginslist*logouts)
{
int fd=open(backfileO_RDONLY|O_EXCL);
if(fd==-1)
{
throw  DMSException(“打开文件错误!“); 
}
while(1)
{
logrec logs={};
short type;
bzero(logs.logname32);
int re=read(fdlogs.logname32);
if(re<=0)//根据条件跳出循环 
{
break;
}

lseek(fd36SEEK_CUR);
re=read(fd&logs.pidsizeof(pid_t));
logs.pid=ntohl(logs.pid);

re=read(fd&type2);

//处理字节序
/*由于我们实验下的系统是Linux,
实际的日志文件是Unix,采用不同的字节序所以作一个转换*/
type=ntohs(type);

lseek(fd6SEEK_CUR);
re=read(fd&logs.logtime4);
logs.logtime=ntohl(logs.logtime);

lseek(fd28SEEK_CUR);
short size;
re=read(fd&size2);
size=ntohs(size);
bzero(logs.logip257);
re=read(fdlogs.logip257);
logs.logip[size]=0;
if(logs.logname[0]!=‘.‘)
{

if(type==7)
{
/*
cout< cout<

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        114  2009-06-05 09:20  C++ 数据采集\client\backup.sh

     文件        286  2011-05-18 01:29  C++ 数据采集\client\data.h

     文件      41977  2011-06-15 13:35  C++ 数据采集\client\dms

     文件        223  2009-06-05 09:20  C++ 数据采集\client\dmsexception.h

     文件      17100  2011-06-15 13:37  C++ 数据采集\client\logins.dat

     文件       4774  2011-07-14 11:41  C++ 数据采集\client\logreader.cpp

     文件        710  2011-07-14 10:42  C++ 数据采集\client\logreader.h

     文件       2949  2011-07-14 11:26  C++ 数据采集\client\logsender.cpp

     文件        756  2011-07-14 10:55  C++ 数据采集\client\logsender.h

     文件        907  2009-06-05 09:20  C++ 数据采集\client\main.cpp

     文件        202  2011-05-18 01:22  C++ 数据采集\client\Makefile

     文件   12477996  2009-06-05 09:20  C++ 数据采集\client\wtmpx

     文件      27136  2010-12-03 16:03  C++ 数据采集\dmsserver.doc

     文件       1234  2011-06-15 13:34  C++ 数据采集\server\clientaccepter.cpp

     文件        332  2009-06-05 09:20  C++ 数据采集\server\clientaccepter.h

     文件       1907  2009-06-05 09:20  C++ 数据采集\server\clientrecver.cpp

     文件        610  2009-06-05 09:20  C++ 数据采集\server\clientrecver.h

     文件        349  2009-06-05 09:20  C++ 数据采集\server\data.h

     文件        218  2009-06-05 09:20  C++ 数据采集\server\dmsdao.cpp

     文件        131  2009-06-05 09:20  C++ 数据采集\server\dmsdao.h

     文件        244  2009-06-05 09:20  C++ 数据采集\server\dmsexception.h

     文件      20056  2011-06-15 13:36  C++ 数据采集\server\dmsserver

     文件       1309  2011-06-15 13:36  C++ 数据采集\server\dmsserver.cpp

     文件        296  2009-06-05 09:20  C++ 数据采集\server\dmsserver.h

     文件        115  2009-06-05 09:20  C++ 数据采集\server\idao.h

     文件        278  2009-06-05 09:20  C++ 数据采集\server\Makefile

     文件     109835  2011-06-22 13:35  C++ 数据采集\wtmpx.jpg

     文件      41472  2010-07-06 16:27  C++ 数据采集\项目文档.doc

     目录          0  2012-07-03 23:04  C++ 数据采集\client

     目录          0  2012-07-03 23:04  C++ 数据采集\server

............此处省略4个文件信息

评论

共有 条评论