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

📄 send_free_wait.cpp

📁 SP平台联通短信群发程序
💻 CPP
字号:
//从文件中读取号码和内容,免费发送,插入到WAIT表中//格式: ./sendfree_all_wait 号码文件名 发送内容 业务代码 每秒发送频次 指定发送开始时间(免费,WAIT表)//例子:./sendfree_all_wait phone.txt nr.txt FREE 5 20031201120215#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","192.168.0.7",db_host);	GetProfileString(INIFILE,"DB_LOCAL","LOGNAME","dream",db_user);	GetProfileString(INIFILE,"DB_LOCAL","LOGPASS","",db_passwd);	GetProfileString(INIFILE,"DB_LOCAL","DBNAME","NW_SM_TEST",db_dbname);	return 0;}int main(int argc,char *argv[]){	char filename[100],file_nr[100],begin_date[20],sv_code[100],sql[500];	char msisdn[30];	char context[1000];	FILE *fp;	int len,i,n,k,retval;	int times;	MYSQL_ROW row;	MYSQL_RES *res = NULL;	i=0;n=0;k=0;	    	SEND_STRUC sendstruc;	InitPara();	puts(db_dbname);	if(argc<6)	{		printf("格式:%s 号码文件名 发送内容 业务代码 每秒发送频次 指定发送开始时间(免费,WAIT表)\n",argv[0]);		printf("业务代码一般用FREE,也可用一些指定的代码\n");		printf("每秒发送频次一般是5\n");		printf("指定发送开始时间格式如:20031201062050\n");		return 0;	}	else	{		strcpy(filename,argv[1]);		strcpy(file_nr,argv[2]);			strcpy(sv_code,argv[3]);		times=atoi(argv[4]);		strcpy(begin_date,argv[5]);		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;		}			}	fp = fopen(file_nr,"rb");	if(fp == NULL)	{		puts("打开发送内容文件失败!");		return 0;	}	len = fread(context,1,999,fp);	context[len] = '\0';		printf("content len:%d\n",len);	fclose(fp);		if(len>500)	{		puts("你的发送内容已超过500个字节,请查实后再发");		return 0;	}	memset(&sendstruc,0,sizeof(sendstruc));	sendstruc.nNeedReply = NEED_REPLY_NO;	sendstruc.nMsgLevel = 5;	strcpy(sendstruc.sServiceID,sv_code);	sendstruc.nMsgFormat = 0;	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,"5");	strcpy(sendstruc.sMsgContent,context);		fp = fopen(filename,"r");	if(fp == NULL)	{		puts("open file error!");		return 0;	}	myconn = dbconnect(db_host,db_user,db_passwd,db_dbname);	if(myconn == NULL)	{		puts("连接数据库失败,请查看日志文件!");		return 0;	}	while(fgets(msisdn,30,fp)!=NULL)	{		msisdn[11] = '\0';		if (strncmp(msisdn,"13",2)!=0 || strlen(msisdn)!=11) 		{			continue;		}				//查询用户是否是黑名单用户		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,"");    			k++;			n++;			if(n%1000==0)			{				printf("%d\n",n);			}		}	}	printf("the total num you send is:%d\n",n);	fclose(fp);		return 0;}

⌨️ 快捷键说明

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