选择显示字体大小

cs模式短信监控系统的设计与实现

简介:

  
在通信行业和网络行业,往往需要对一些重要的系统进行24小时的监控,随着短信的兴起,在传统监控系统中增加短信告警就会非常实用,本文介绍了简单的分布式短信监控系统的设计与实现。

  基本的设计思路如下:

  1) 在一个稳定的socket通讯包中进行代码改造,在www.codeproject.com中找到一个分为client/server端的通讯程序,连接方式有tcp/udp两种方式选择,一个server可连接多个client端,client/server之间可对发数据

  2) 在需要被监控的程序(这里假设为monitorprog.exe)中增加定时写数据库的功能,一般来说设为5分钟,这里是将数据库作为监控数据的一个中间存贮

  3) 改造socket通讯的客户端程序,让client.exe定期读数据库中的时间,如果时间在某个阶段不变说明被监控程序不正常

  4) 改造socket通讯的server端程序,接受client端的告警信息然后通过短信接口发送出去,发送短信的方式有很多,这里采用gsm modem发送短信,在vc代码中采用mscomm控件来向gsmmodem写串口数据.

  补充:以上的设计思路中采用定期写入当前时间的方式进行监控,这对系统的性能或许有一定影响,这就需要在稳定性和性能两方面进行权衡.

  以下为具体的实现步骤:

  1) 建数据库

create table module_tbl_monitor
(
 exename varchar(5), //被监控程序名称
 entertime varchar(20) //监控时间
)

insert into module_tbl_monitor values('exe1','2005-12-28 14:00:00')//插入一条记录,表示对exe1程序进行监控

  2) 修改client端程序

  client端只需要增加一个定期读数据库的代码.

/***************************************************************************
*description: (全局)连接数据库
*parameters: ssection --- 配置文件section
sname --- 配置项
sdefaultvalue --- 缺省值
*author:
*version: 1.0
*date: 2005-3-8 17:27
*cautions: 无
**************************************************************************/

void connectdb()
{
 if(failed(m_pconnection.createinstance("adodb.connection")))
 {
  afxmessagebox("create instance failed!");
 }
 try
 {
  m_pconnection->open("dsn=??;uid=sa;pwd=??","","",-1);//数据库连接串
 }
 catch(_com_error e)
 {
  //char mybuf[10240];
  //wsprintf(mybuf,"description = '%s'\n",(char*)e.description());
  afxmessagebox("connect to database error!");
 }
}

/***************************************************************************
*description: 从数据库中获取监控数据
*parameters:
*author:
*version: 1.0
*date: 2006-1-6
*cautions: 无
**************************************************************************/

void cclientsocketdlg::getdata()
{
 m_precordset.createinstance(__uuidof(recordset));
 m_precordset->open("select * from module_tbl_monitor",
  m_pconnection.getinterfaceptr(),adopendynamic,adlockoptimistic,adcmdtext);

 m_precordset->movefirst();
 _variant_t holder;

 int inum = 1;
 cstring machinename;
 cstring stime = "";

 while(!m_precordset->adoeof)
 {
  ……..
  //如果时间没变,向server发送告警信息
 }


  3) 修改server端程序


  短信发送代码

void cserversocketdlg::sendsms(cstring ssmstext)
{
 if(!ionoroff)
 {
  return;
 }
 if(m_mscomm.getportopen()) //如果串口是打开的,则先关闭串口
 {
  m_mscomm.setportopen(false);
 }

 m_mscomm.setcommport(1); //选择com1
 m_mscomm.setinbuffersize(1024); //接收缓冲区
 m_mscomm.setoutbuffersize(1024);//发送缓冲区
 m_mscomm.setinputlen(0);//设置当前接收区数据长度为0,表示全部读取
 m_mscomm.setinputmode(1);//以二进制方式读写数据
 m_mscomm.setrthreshold(1);//接收缓冲区有1个及1个以上字符时,将引发接收数据的oncomm事件
 m_mscomm.setsettings("9600,n,8,1");//波特率9600无检验位,8个数据位,1个停止位

 if(!m_mscomm.getportopen())//如果串口没有打开则打开
  m_mscomm.setportopen(true);//打开串口
 else
  m_mscomm.setoutbuffercount(0);

 //通过at指令发送sms

 if(m_mscomm.getportopen())
 {
  cstring sreceiver;
  cstring m_strtxdata;
  m_strtxdata = "at+cmgf=1\r\n";
  m_mscomm.setoutput(colevariant(m_strtxdata));//发送数据
  for(int i = 0; i < sreceiverarr.getsize(); i++)
  {
   sreceiver = sreceiverarr[i];
   m_strtxdata="at+cmgs=" + sreceiver + " \r\n";
   sleep(2000);
   m_mscomm.setoutput(colevariant(m_strtxdata));//发送数据
   m_strtxdata = ssmstext + " \x01a";
   sleep(2000);
   m_mscomm.setoutput(colevariant(m_strtxdata));//发送数据
   sleep(2000);
  }
 }
}

  client端运行界面



  server端运行界面


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons