📄 send_hd7_free_wait.cpp
字号:
#include <stdio.h>#include <string.h>#include <time.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include "../include/define.h"#include "../include/CMPPAPI.hpp"#include "mysql/mysql.h"#include "../include/sm_tools.h"#include "../include/sm_db.h"#define INIFILE "../config/sm.ini"char db_host[100],db_user[100],db_passwd[100],db_dbname[100];MYSQL *myconn;//fixdatetime为指定的时间,subtime为间隔时间,adddate为得到的时间char *getfixdate(char *fixdatetime,int subtime,char *adddate){ time_t ftimer; struct tm ftm; struct tm *ltm; char fixdate[20],fixtime[20],ndate[20]; int fday,ftime; memset(ndate,0,sizeof(fixdatetime)); memset(fixdate,0,sizeof(fixdatetime)); memset(fixtime,0,sizeof(fixdatetime)); strncpy(fixdate,fixdatetime,8); strncpy(fixtime,fixdatetime+8,6); fixdate[8]='\0'; fixtime[6]='\0'; fday=atoi(fixdate); ftime=atoi(fixtime); //printf("ftime%d\n",ftime); ftm.tm_year=fday/10000 - 1900; fday%=10000; ftm.tm_mon=fday/100 - 1; ftm.tm_mday=fday%100; ftm.tm_hour=ftime/10000; ftime%=10000; ftm.tm_min=ftime/100; ftm.tm_sec=ftime%100; ftm.tm_isdst=0; ftimer=mktime(&ftm); ftimer+=subtime; ltm = localtime(&ftimer); sprintf(ndate,"%04d%02d%02d%02d%02d%02d", ltm->tm_year + 1900, ltm->tm_mon + 1, ltm->tm_mday, ltm->tm_hour, ltm->tm_min, ltm->tm_sec); //printf("ndate=%s\n",ndate); strcpy(adddate,ndate); //puts(adddate); return adddate;}static int InitPara(){ myconn = NULL; GetProfileString(INIFILE,"DB_LOCAL","HOST","localhost",db_host); GetProfileString(INIFILE,"DB_LOCAL","LOGNAME","root",db_user); GetProfileString(INIFILE,"DB_LOCAL","LOGPASS","",db_passwd); GetProfileString(INIFILE,"DB_LOCAL","DBNAME","NW_SM",db_dbname); return 0;}int main(int argc,char *argv[]){ char *day; char file_nr[100],begin_date[20],phone[20],sql[500]; char msisdn_seg[20]; char msisdn[20]; char context[1000]; FILE *fp; double fee; int len,seg_len,i,j,k,n,retval; int times; SEND_STRUC sendstruc; MYSQL_ROW row; MYSQL_RES *res = NULL; i=0,k=0,n=0; InitPara(); puts(db_dbname); if(argc<5) { printf("格式:%s 发送内容 7位号段 每秒发送频次 指定发送开始时间\n",argv[0]); return 0; } else { strcpy(file_nr,argv[1]); strcpy(msisdn_seg,argv[2]); seg_len = strlen(msisdn_seg); times=atoi(argv[3]); strcpy(begin_date,argv[4]); puts(begin_date); if (strlen(begin_date)!=14 || strncmp(begin_date,"20",2)<0) { puts("begin_date must be 14 byte, like as 20031028051201"); return 0; } } if(strncmp(msisdn_seg,"13",2)!=0) { printf("请填写13开头\n"); return 0; } if(strlen(msisdn_seg)!=7) { printf("请填写7位号段\n"); return 0; } fp = fopen(file_nr,"rb"); if(fp == NULL) { puts("打开发送内容文件失败!"); return 0; } len = fread(context,1,999,fp); context[len] = '\0'; printf("len:%d\n",len); fclose(fp); puts(db_dbname); memset(&sendstruc,0,sizeof(sendstruc)); sendstruc.nNeedReply = NEED_REPLY_NO; strcpy(sendstruc.icpid,"MO"); sendstruc.nMsgLevel = 1; strcpy(sendstruc.sServiceID,"FREE"); sendstruc.nMsgFormat = MSG_FORMAT_ASCII; strcpy(sendstruc.sFeeType,"01"); sendstruc.sFeeCode = 0.00; strcpy(sendstruc.sValidTime,""); strcpy(sendstruc.sAtTime,""); strcpy(sendstruc.sSrcTermID,"8566"); sendstruc.cFeeUserType=0; strcpy(sendstruc.sFeeTerminalID,""); sendstruc.cTpPid = 0; sendstruc.cTpUdhi = 0; strcpy(sendstruc.step,"9"); getnowdate(sendstruc.Send_Date); strcpy(sendstruc.sMsgContent,context); myconn = dbconnect(db_host,db_user,db_passwd,db_dbname); if(myconn == NULL) { puts("连接数据库失败,请查看日志文件!"); return 0; } for(j=0;j<10000;j++) { strcpy(msisdn,msisdn_seg); sprintf(phone,"%04d",j); strcat(msisdn,phone); msisdn[11] = '\0'; //查询用户是否是黑名单用户 sprintf(sql,"SELECT FLAG FROM INFO_BLACK_PHONE WHERE (MSISDN='%s' OR SUBSTRING('%s',1,7)=MSISDN) AND FLAG='1'",msisdn,msisdn); retval = QuerySQL(sql,&myconn,&res); if(retval != 0) { puts("查询USER表指令失败"); continue; } if(res == NULL) { continue; } //有用户记录,是黑名单用户,不发 if( row = mysql_fetch_row(res)) { puts(msisdn); mysql_free_result(res); continue; } //无用户记录,不是黑名单用户,则发送 else { mysql_free_result(res); strcpy(sendstruc.sDesTermID,msisdn); getfixdate(begin_date,i,sendstruc.Send_Date); //getadddate(sendstruc.Send_Date,i); if(k>=times) { i++; k=0; } SendMsg_Wait(&sendstruc,&myconn); strcpy(msisdn,""); strcpy(phone,""); k++; n++; if(n%1000==0) { printf("%d\n",n); } } } printf("the send num:%d\n",n); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -