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

📄 memobserver.cpp

📁 linux 上http email 协议分析程序 主要能够处理大数据量的主干网的应用
💻 CPP
字号:
/**************************************************************Copyright (C), 2002-2010, congxing Co., Ltd.File name:     memObserver.cppAuthor:        wzy Version:       V01.00.00.00Date:          2006.06.24Description:   Others:        History:        ***************************************************************///引用头文件#include <stdio.h>#include <stdlib.h>#include <memory.h>#include <unistd.h>#include <time.h>#include <Utility.h>#include "Tools.h"#include "BaseConst.h"#include "ShmApply.h"#include "Ini.h"#include "Db.h"void sigtimeout(int sig);void initShm( char *szfilename);void initDb( char *szfilename);void registerMem();bool g_btimeOut;int g_itimeOut;COra *g_db;CTblPARA *g_ppara;CShmApply csa_udp,csa_tcp,csa_msn,csa_radius,csa_qq,csa_yahoo,csa_telnet,csa_ftp;int main(int argc, char* argv[]){	if (argc < 3)	{		printf("Usage: %s  <config file>  timeout\n", argv[0]);		exit(-1);	}		TLog::openLog(argv[0]);		g_btimeOut=false;	g_itimeOut=atoi(argv[2]);	initDb(argv[1]);	initShm( argv[1]);	registerMem();	signal(SIGALRM,sigtimeout);    alarm(g_itimeOut);		while(1)	{		if(g_btimeOut)		{			g_btimeOut=false;			registerMem();		}		else			pause();	}}void sigtimeout(int sig){		g_btimeOut=true;		signal(SIGALRM,sigtimeout);		alarm(g_itimeOut);}void initDb(char *filename){		CConfig cfg;				char buf[32];		char buf1[32];		if (cfg.ReadConfig(filename) != 0)		{			printf("Read %s Failed!\n",filename);			exit(-1);		}			if(cfg.GetItemValue("DB", "name", buf)!=0)		{				printf("Read DB:id Failed!\n");			exit(-1);		}		if(cfg.GetItemValue("DB", "passwd", buf1)!=0)		{			printf("Read DB:id Failed!\n");			exit(-1);		}			g_db=new COra(buf,buf1);				g_ppara=new CTblPARA();	}void initShm( char *szfilename){		CConfig cfg;	char chKey[15+1];	key_t key ;	char chShmSize[15+1];	long lgShmSize = 0;		bzero(chKey, sizeof(chKey)); 	bzero(chShmSize, sizeof(chShmSize));  			// 读配置文件,获取共享内存的key值和大小	if (cfg.ReadConfig(szfilename) != 0)	{		printf("--Read INI File:%s Failed!\n",szfilename );		exit(-1);	}	// 读配置	cfg.GetItemValue("COLLSHM", "key_tcp", chKey);		// 获取共享内存key值	cfg.GetItemValue("COLLSHM", "size_tcp", chShmSize);	// 获取共享内存大小	if (sscanf(chShmSize, "%ld", &lgShmSize) != 1)	{		printf("[COLLSHM]:size_tcp %s is Not numeric!\n", chShmSize);		exit(-1);	}	if (sscanf(chKey, "%d", &key) != 1)	{		printf("[COLLSHM]:key_tcp %s is Not numeric!\n", chKey);		exit(-1);	}	if (csa_tcp.init(key, lgShmSize * 1024 * 1024, 0666) < 0)	{		printf("Init semaphore failed!\n");		exit(-1);	}	//udp(exclude radius)	cfg.GetItemValue("COLLSHM", "key_udp", chKey);		// 获取共享内存key值	cfg.GetItemValue("COLLSHM", "size_udp", chShmSize);	// 获取共享内存大小	if (sscanf(chShmSize, "%ld", &lgShmSize) != 1)	{		printf("[COLLSHM]:size_udp %s is Not numeric!\n", chShmSize);		exit(-1);	}	if (sscanf(chKey, "%d", &key) != 1)	{		printf("[COLLSHM]:key_udp %s is Not numeric!\n", chKey);		exit(-1);	}	if (csa_udp.init(key, lgShmSize * 1024 * 1024, 0666) < 0)	{		printf("--Init  failed!\n");		exit(-1);	}	//msn	cfg.GetItemValue("COLLSHM", "key_msn", chKey);		// 获取共享内存key值	cfg.GetItemValue("COLLSHM", "size_msn", chShmSize);	// 获取共享内存大小	if (sscanf(chShmSize, "%ld", &lgShmSize) != 1)	{		printf("[COLLSHM]:size_msn %s is Not numeric!\n", chShmSize);		exit(-1);	}	if (sscanf(chKey, "%d", &key) != 1)	{		printf("[COLLSHM]:key_msn %s is Not numeric!\n", chKey);		exit(-1);	}	if (csa_msn.init(key, lgShmSize * 1024 * 1024, 0666) < 0)	{		printf("-Init  failed!\n");		exit(-1);	}	//radius	cfg.GetItemValue("COLLSHM", "key_radius", chKey);		// 获取共享内存key值	cfg.GetItemValue("COLLSHM", "size_radius", chShmSize);	// 获取共享内存大小	if (sscanf(chShmSize, "%ld", &lgShmSize) != 1)	{		printf("[COLLSHM]:size_radius %s is Not numeric!\n", chShmSize);		exit(-1);	}	if (sscanf(chKey, "%d", &key) != 1)	{		printf("[COLLSHM]:key_radius %s is Not numeric!\n", chKey);		exit(-1);	}	if (csa_radius.init(key, lgShmSize * 1024 * 1024, 0666) < 0)	{		printf("-Init  failed!\n");		exit(-1);	}		//qq	cfg.GetItemValue("COLLSHM", "key_qq", chKey);		// 获取共享内存key值	cfg.GetItemValue("COLLSHM", "size_qq", chShmSize);	// 获取共享内存大小	if (sscanf(chShmSize, "%ld", &lgShmSize) != 1)	{		printf("[COLLSHM]:size_radius %s is Not numeric!\n", chShmSize);		exit(-1);	}	if (sscanf(chKey, "%d", &key) != 1)	{		printf("[COLLSHM]:key_radius %s is Not numeric!\n", chKey);		exit(-1);	}	if (csa_qq.init(key, lgShmSize * 1024 * 1024, 0666) < 0)	{		printf("--Init  failed!\n");		exit(-1);	}	//yahoo	cfg.GetItemValue("COLLSHM", "key_yahoo", chKey);		// 获取共享内存key值	cfg.GetItemValue("COLLSHM", "size_yahoo", chShmSize);	// 获取共享内存大小	if (sscanf(chShmSize, "%ld", &lgShmSize) != 1)	{		printf("[COLLSHM]:size_radius %s is Not numeric!\n", chShmSize);		exit(-1);	}	if (sscanf(chKey, "%d", &key) != 1)	{		printf("[COLLSHM]:key_radius %s is Not numeric!\n", chKey);		exit(-1);	}	if (csa_yahoo.init(key, lgShmSize * 1024 * 1024, 0666) < 0)	{		printf("--Init  failed!\n");		exit(-1);	}	//ftp	cfg.GetItemValue("COLLSHM", "key_ftp", chKey);		// 获取共享内存key值	cfg.GetItemValue("COLLSHM", "size_ftp", chShmSize);	// 获取共享内存大小	if (sscanf(chShmSize, "%ld", &lgShmSize) != 1)	{		printf("[COLLSHM]:size_ftp %s is Not numeric!\n", chShmSize);		exit(-1);	}	if (sscanf(chKey, "%d", &key) != 1)	{		printf("[COLLSHM]:key_ftp %s is Not numeric!\n", chKey);		exit(-1);	}	if (csa_ftp.init(key, lgShmSize * 1024 * 1024, 0666) < 0)	{		printf("--Init  failed!\n");		exit(-1);	}	//telnet	cfg.GetItemValue("COLLSHM", "key_telnet", chKey);		// 获取共享内存key值	cfg.GetItemValue("COLLSHM", "size_telnet", chShmSize);	// 获取共享内存大小	if (sscanf(chShmSize, "%ld", &lgShmSize) != 1)	{		printf("[COLLSHM]:size_telnet %s is Not numeric!\n", chShmSize);		exit(-1);	}	if (sscanf(chKey, "%d", &key) != 1)	{		printf("[COLLSHM]:key_telnet %s is Not numeric!\n", chKey);		exit(-1);	}	if (csa_telnet.init(key, lgShmSize * 1024 * 1024, 0666) < 0)	{		printf("--Init  failed!\n");		exit(-1);	}}void registerMem(){			TLog::toLog("coll-udp:%.2f%%\n",csa_udp.userate()*100);		TLog::toLog("coll_tcp:%.2f%%\n",csa_tcp.userate()*100);		TLog::toLog("coll_msn:%.2f%%\n",csa_msn.userate()*100);		TLog::toLog("coll_radius:%.2f%%\n",csa_radius.userate()*100);		TLog::toLog("coll_yahoo:%.2f%%\n",csa_yahoo.userate()*100);		TLog::toLog("coll_telnet:%.2f%%\n",csa_telnet.userate()*100);		TLog::toLog("coll_ftp:%.2f%%\n",csa_ftp.userate()*100);				/*	TLog::toLog("coll-udp:%.2f%%\n",csa_udp.userate()*100);		TLog::toLog("coll-udp:%.2f%%\n",csa_udp.userate()*100);		TLog::toLog("coll-udp:%.2f%%\n",csa_udp.userate()*100);		*/}

⌨️ 快捷键说明

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