亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? smgp3.c

?? 基于上海電信 sgmp3.0短信協(xié)議,實(shí)現(xiàn)的源程序,現(xiàn)網(wǎng)運(yùn)行穩(wěn)定,unix (freeBSD) 環(huán)境下編程.
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*$Header: /base/cvsroot/wam/sms/platform/src/smgp3/SMGP3.c,v 1.26 2007/08/01 08:20:16 haowen Exp $*/
/*
 * SMGP3.c
 * SMGP protocol Daemon
 * Version 3.0 
 *gcc SMGP3.c nsmgp.c mylog.c smgw.c  utils.c cfg.c UNICODE_2_GBK.c md5.c parse_packet.c -g -lunicode  -pthread -I/usr/local/include/mysql -lmysqlclient -L/usr/local/lib/mysql -o SMGP3
 
  gcc -g SMGP3.c nsmgp.c common/mylog.c smgw.c parse_packet.c common/utils.c common/cfg.c common/UNICODE_2_GBK.c common/md5.c -lunicode -pthread -I./common/ -I/usr/local/include/mysql -lmysqlclient -L/usr/local/lib/mysql -o SMGP3

 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <errmsg.h>
#include <my_config.h>
#include <mysql.h>
#include <mysqld_error.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/errno.h>
#include <unistd.h>
#include <time.h>
#include <stdarg.h>
#include <unistd.h>
#include <errno.h>
//#include <gnu/regex.h>
#include <pthread.h>

#include "nsmgp.h"
#include "cfg.h"
#include "mylog.h"
#include "utils.h"
#include "smgw.h"
#include "error.h"

extern int errno;

typedef struct {
    int  MsgType;
    char FeeType[4];
    int  FeeCode;       // 0 -- 表示使用 '000000', 1 -- 表示使用真實(shí)的費(fèi)用
    int  FixFee;        // 同上
} STYPE;

static STYPE S_MF;  // 免費(fèi)
static STYPE S_DB;  // 點(diǎn)播,按條
static STYPE S_ATQR;	//按條確認(rèn)語
static STYPE S_ATDZ;
static STYPE S_QR;  // 包月確認(rèn)
static STYPE S_BY;  // 包月
//static STYPE S_AT;
static STYPE S_HD;  // 包月話單

char logfile[256] = "";
char inifile[256] = "";
static int smg_type = 0;
static int smg_recv_type = 0;
static char smg_host[32] = "";
static int smg_port = 0;
static char smg_user[32] = "";
static char smg_pass[32] = "";
static char province[32] = "";
static char cmcode[32] = "";
//but not used
static char spid[32] = "";	

static char send_q_db[32] = "";
static char send_q_host[32] = "";
static char send_q_user[32] = "";
static char send_q_pass[32] = "";
static int send_q_port = 3306;

static char newspcode4[32] = "";


//David for 2SP
static char media_db[32] = "";
static char media_host[32] = "";
static char media_user[32] = "";
static char media_pass[32] = "";
static int  media_port = 3306;

static char gateway_name[32] = "";

//SERVICEMEDIA
static char servicemedia_db[32] = "";
static char servicemedia_host[32] = "";
static char servicemedia_user[32] = "";
static char servicemedia_pass[32] = "";
static int  servicemedia_port = 3306;

static int  timeout_no_submit_resp = 180;

static int retry_num = 3;
static int retry_max = -3;

static int expiretime = 0;
static int feetrim_flag = 0;
static int  priority =0;

static int isHainanFlag=0;

static int altq_num = 10;
static int resnum = 50;
static int altq_timer = 1000 * 80;
static int connections =1; //總連接數(shù)
static int connected =1;// 已連接數(shù)
static int disconnected[10] ={-2,-2,-2,-2,-2,-2,-2,-2,-2,-2};// 斷開線程號
static int memsend = 500;
static int reportnum = 500;
static int NeedSubmitResp = 0; 
static int reporttime =5;
static int socketbuffersize = 1024*1024;
static char nanjingct_flag[1 + 1] = "0";
/*管理平臺號碼*/
static char ismp[32] ="";
static char smps[32] ="";

// For main()
MYSQL fsql_mainmedia;
MYSQL fsql_main;
MYSQL fsql_servicemedia;

pthread_t pThread ,pThreadR, pThreadS;

struct timeval tSecond1, tSecond2 ;

pthread_mutex_t sendq_lock[10]={PTHREAD_MUTEX_INITIALIZER}; //發(fā)送隊(duì)列
pthread_mutex_t resq_lock[10]={PTHREAD_MUTEX_INITIALIZER}; // 接收隊(duì)列
pthread_mutex_t cnum_lock[10]={PTHREAD_MUTEX_INITIALIZER}; // 鏈接狀態(tài),submitresp

SEND_Q *SENDQ[10]; // send buffer 
RES_Q *RESQ[10]; // recv response buffer
SEND_Q sendtemp; // send buffer temp
SEND_Q *reportlog=NULL;
static int  threads[10][4] = {{0}}; //socket(鏈接狀態(tài)), 鏈接狀態(tài), needsubmitresp

/*查找BUFFER 中空位置,返回-1表示MAP滿*/
int FindPlace(SEND_Q *map, int size )
{
	int i;

//	INFO("[FUNCTION-FINDPLACE]: call , mapsize:%d\n", size);
	for(i=0; i<size; i++)
	{
//		INFO("[FUNCTION-FINDPLACE] START sq_id :%d i:%d\n", map[i].sq_id ,i );
		if(map[i].sq_id <= 0)
		{
			return i;
		}
//		INFO("[FUNCTION-FINDPLACE] END sq_id :%d i:%d\n", map[i].sq_id , i);
	}
	
	if(i == size)
	{
		return -1;
	}
	
}


// 匹配發(fā)送隊(duì)列和接收隊(duì)列中數(shù)據(jù)
int CheckRes(SEND_Q *sendq, RES_Q  *resq, SEND_Q *sendreport)
{
	int sendn=0, resn =0;
	int flaginsert =0,k=0, flag=0;
	char tempquery[1024];
	
	for ( resn =0 ; resn <memsend; resn++)
	{
		if(strlen(resq[resn].rq_submit_id) >0)
		{
			for(sendn =0 ; sendn <memsend ; sendn++)
			{
				if(strcmp(resq[resn].rq_submit_id, sendq[sendn].sq_submit_id) == 0 ) 
				{
					if( resq[resn].rq_response_status == 33 || resq[resn].rq_response_status == 88 || resq[resn].rq_response_status == 1)
					{
						// 流量錯,重發(fā)
						strcpy(sendq[sendn].sq_submit_id , "");
						strcpy(sendq[sendn].sq_submit_stat, "");
						INFO("[INFO-MAIN] resend  sq_id[%d]\n", sendq[sendn].sq_id );
						break;
					}
					else if( resq[resn].rq_response_status != 0 && resq[resn].rq_response_status != -1 && resq[resn].rq_response_status != -1)
					{
						if(sendq[sendn].sq_pri <= retry_max)
						{
							// insert into send_log , failed
							InsertSendLog(&fsql_main, send_q_db,&sendq[sendn], resq[resn].rq_response_status);
							if (strcmp(sendq[sendn].sq_from, "16") == 0)
							{	
								memset(tempquery, 0 , 1024);
								sprintf(tempquery,"insert into %s.lowerSP (AutoId, ServiceCode, Mobile, MobileType, Spnumber, Msg, MsgType, LinkID, WAMID, Status, ArrivedTime, MsgFrom, MediaName, Reserved) 	values(null, \'%s\', \'%s\', \'0\', \'%s\', \'%d\', \'%s\', \'%s\', \'%s\', \'0\', now(), \'0\', \'%s\', \'\')", media_db, sendq[sendn].sq_service_code, sendq[sendn].sq_mobile, sendq[sendn].sq_send, resq[resn].rq_response_status, "1", sendq[sendn].sq_linkid, sendq[sendn].sq_wamid, gateway_name);
								INFO("[INFO-MAIN]: Insert l2sp:[%s]\n",  tempquery);
						 		flaginsert= mysql_real_query(&fsql_mainmedia, tempquery, strlen(tempquery));
						 		if (flaginsert != 0)
								{
									INFO("[-ERR-MAIN]: insert l2sp failed .\n");
								}
							}
							sendq[sendn].sq_id = 0;
							memset(&sendq[sendn], 0, sizeof(SEND_Q));
									
						}
						else
						{
							sendq[sendn].intime = time(NULL);
							strcpy(sendq[sendn].sq_submit_id , "");
							strcpy(sendq[sendn].sq_submit_stat, "");
							sendq[sendn].sq_pri--;
						}
						break;
					}
					else
					{
						k= FindPlace(sendreport,  memsend);
						if(k == -1)
						{
							INFO("[INFO-MAIN] reportlog full\n");
							return -1; // 緩存滿
						}
						else
						{
							strcpy(sendq[sendn].sq_sms_scheduletime, resq[resn].rq_response_time);
							strcpy(sendq[sendn].sq_submit_id, resq[resn].rq_msgid);
							if(resq[resn].rq_response_status ==0) // response received 
							{
								if(sendq[sendn].sq_msg_type == 20 || sendq[sendn].sq_msg_type == 21 || sendq[sendn].sq_msg_type == 22
									|| sendq[sendn].sq_msg_type == 23 || sendq[sendn].sq_msg_type == 24 || sendq[sendn].sq_msg_type == 6)
								{
									//訂購,點(diǎn)播同步信息,沒有狀態(tài)報告,直接插入send_log
									INFO("[INFO-MAIN] when sq_msg_type is 20,21,22,23,24, there are no report. so into send_log\n");
									InsertSendLog(&fsql_main, send_q_db,&sendq[sendn], 0);
									memset(&sendq[sendn],0, sizeof(SEND_Q));
									break;
								}
								strcpy(sendq[sendn].sq_submit_stat, "SMC");
							}
							else if(resq[resn].rq_response_status == -1) // simulate response 
								strcpy(sendq[sendn].sq_submit_stat, "SMC");
							else if(resq[resn].rq_response_status == -3) // unsend
								strcpy(sendq[sendn].sq_submit_stat ,"unsend");
						
							memset(tempquery, 0 , 1024);
							// insert sp 2
						     	if (strcmp(sendq[sendn].sq_from, "16") == 0)
						     	{
								sprintf(tempquery,"insert into %s.lowerSP (AutoId, ServiceCode, Mobile, MobileType, Spnumber, Msg, MsgType, LinkID, WAMID, Status, ArrivedTime, MsgFrom, MediaName, Reserved) 	values(null, \'%s\', \'%s\', \'0\', \'%s\', \'%d\', \'%s\', \'%s\', \'%s\', \'0\', now(), \'0\', \'%s\', \'\')", media_db, sendq[sendn].sq_service_code, sendq[sendn].sq_mobile, sendq[sendn].sq_send, resq[resn].rq_response_status, "1", sendq[sendn].sq_linkid, sendq[sendn].sq_wamid, gateway_name);
								INFO("[INFO-MAIN]: Insert l2sp:[%s]\n",  tempquery);
				 		     		flaginsert= mysql_real_query(&fsql_mainmedia, tempquery, strlen(tempquery));
				 				if (flaginsert != 0)
								{
									INFO("[-ERR-MAIN]: insert l2sp failed .\n");
								}
						     	}
							INFO("[INFO-MAIN] resn[%d] Response ID[%s] status[%d] status found in sendbuffer\n", resn, resq[resn].rq_submit_id, resq[resn].rq_response_status);
							memcpy(&sendreport[k], &sendq[sendn] ,sizeof(SEND_Q));
			//				INFO("[DEBUG] sendreport[%d].sq_id = %d \n", k, sendreport[k].sq_id);
							memset(&sendq[sendn],0, sizeof(SEND_Q));
			//				INFO("[INFO-MAIN] check res :resq[%d] sendq[%d] \n",resn, sendn);
							break;
						}
					}
				}
			}
			memset(&resq[resn], 0, sizeof(RES_Q)); // Not found , clear 
		}
	}
	return 0;
}


int Dumptosendreport(SEND_Q *send, char *deletestring)
{
	int i =0,n=0;
    	char tempquery[1024];
    	char content[256];

	for (i=0; i< memsend; i++)
		if(send[i].sq_id >0)
		{
			    send[i].sq_desc_pi[0] = '\0';
			    send[i].sq_desc_mi[0] = '\0';

			    mysql_escape_string(content, send[i].sq_sms_content, strlen(send[i].sq_sms_content)) ;
			    sprintf(tempquery, " (NULL,'%s',%d,'%s','%s','%s',%d,'%s','%s','%s','%s','%s','%s','%s',%d,'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",
			            //send->sq_id,
			            send[i].sq_service_code,
			            send[i].sq_pri,               // %d
			            send[i].sq_message_format,
			            send[i].sq_fee_type,
			            send[i].sq_fee_code,
			            send[i].sq_sms_length,        // %d
			            content,
			            send[i].sq_content_type,
			            send[i].sq_desc_pi,
			            send[i].sq_desc_mi,
			            send[i].sq_mobile,
			            send[i].sq_send,
			            send[i].sq_fee_mobile,
			            send[i].sq_msg_type,          // %d
			            send[i].sq_content_name,
			            send[i].sq_content_id,
			            send[i].sq_provider,
			            send[i].sq_province,
			            send[i].sq_sms_scheduletime,
			            send[i].sq_send_time,
			            send[i].sq_submit_id,
			            "SMC",                      //send->sq_submit_stat,
			            send[i].sq_submit_time,
			            send[i].sq_linkid,
			            send[i].sq_jf_code,
			            send[i].sq_product,
			            send[i].sq_zone_province,
			            send[i].sq_zone_city,
			            send[i].sq_from,
			            send[i].sq_wamid,
			            send[i].sq_reg_cmd,
			            send[i].sq_reg_gateway,
			            send[i].sq_reg_from);
				strcat(deletestring, tempquery);
				strcat(deletestring, ",");
				n++;
			//	send[i].sq_id =0;
				memset(&send[i], 0, sizeof(SEND_Q));
		}
		return n;
}

// 模擬response,返回值為模擬的response數(shù)量
int simulateres(SEND_Q *sendq, RES_Q *resq)
{
	int k =0, i=0, n=0;
#if 0
	for(k = 0; k<memsend ; k++)
		if( strcmp(sendq[k].sq_submit_stat , "sub") ==0 )
			for(i=0; i< memsend ; i++)
				{
					if(strlen(resq[i].rq_submit_id)==0)
					{
						strcpy(resq[i].rq_submit_id , sendq[k].sq_submit_id);
						getdatetime(resq[i].rq_response_time);
						resq[i].rq_response_status = -3;
						resq[i].intime = time(NULL);
					}
				}
#endif 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美国产wwwww| 91热门视频在线观看| 欧美大片一区二区| 久久爱另类一区二区小说| 日韩欧美一区在线观看| 黄色资源网久久资源365| 久久精品人人做人人综合| 国产成人av电影在线| 中文字幕一区av| 欧美在线观看你懂的| 首页国产欧美久久| 欧美大度的电影原声| 国产成人8x视频一区二区| 亚洲婷婷国产精品电影人久久| 在线视频你懂得一区| 日本在线不卡一区| 欧美极品少妇xxxxⅹ高跟鞋 | 欧美视频一区二区三区| 日韩黄色小视频| 久久蜜桃av一区二区天堂| 91在线视频免费观看| 男人的天堂亚洲一区| 亚洲国产精品高清| 欧美日韩一区小说| 激情综合色丁香一区二区| 国产精品传媒入口麻豆| 欧美裸体一区二区三区| 国产乱国产乱300精品| 亚洲精品一二三| 欧美精品一区二区三| 91麻豆视频网站| 伦理电影国产精品| 亚洲视频网在线直播| 欧美一级视频精品观看| 成人福利在线看| 奇米777欧美一区二区| 亚洲视频精选在线| 精品99久久久久久| 欧美日韩在线播放三区四区| 国产美女精品人人做人人爽| 亚洲国产乱码最新视频| 国产欧美精品在线观看| 欧美福利视频导航| 99免费精品视频| 精品亚洲aⅴ乱码一区二区三区| 亚洲欧洲制服丝袜| 久久久国产精品不卡| 91精品国产高清一区二区三区蜜臀| 成人av网址在线观看| 久久不见久久见免费视频7| 亚洲一区二区精品久久av| 国产亲近乱来精品视频 | 日韩精品久久久久久| 中文字幕av一区二区三区| 日韩亚洲欧美综合| 欧美亚洲国产bt| 91猫先生在线| 99re成人精品视频| 国产成人一区二区精品非洲| 日本大胆欧美人术艺术动态 | 精品国产一区二区国模嫣然| 欧美日韩一级二级三级| av中文字幕不卡| 丁香一区二区三区| 国产激情精品久久久第一区二区| 秋霞影院一区二区| 人人爽香蕉精品| 香蕉影视欧美成人| 亚洲成人7777| 日韩精品欧美精品| 亚洲成人资源网| 亚洲视频香蕉人妖| 一区二区三区四区视频精品免费 | 国产一区二区精品久久| 九九精品视频在线看| 午夜欧美2019年伦理| 亚洲综合免费观看高清完整版在线 | 91麻豆精品国产91久久久更新时间 | 亚洲色大成网站www久久九九| 国产精品拍天天在线| 中文字幕国产一区| 中文字幕制服丝袜一区二区三区| 国产日产欧美一区| 中文在线一区二区| 国产精品初高中害羞小美女文| 国产精品免费视频一区| 国产精品日韩精品欧美在线| 亚洲欧美一区二区在线观看| 国产精品乱码久久久久久| 国产精品久久久久一区二区三区共 | 国产精品正在播放| 国产suv精品一区二区883| gogogo免费视频观看亚洲一| 91在线小视频| 欧美揉bbbbb揉bbbbb| 日韩一区二区三| 久久久www成人免费毛片麻豆| 国产欧美精品一区二区色综合 | 在线观看日韩精品| 欧美精品日韩综合在线| 日韩欧美中文字幕制服| 国产午夜精品在线观看| 亚洲免费资源在线播放| 亚洲第一成年网| 精品午夜久久福利影院| 成人美女视频在线观看18| 色香色香欲天天天影视综合网 | 在线成人小视频| 久久久www成人免费无遮挡大片| 国产精品黄色在线观看| 亚洲成a人v欧美综合天堂| 精品一区二区三区久久| 99热99精品| 日韩视频在线永久播放| 中文字幕在线播放不卡一区| 亚洲不卡av一区二区三区| 韩国v欧美v日本v亚洲v| 91麻豆国产精品久久| 欧美大片一区二区| 亚洲欧美乱综合| 国产自产2019最新不卡| 在线看不卡av| 久久精品视频一区| 午夜精品国产更新| 成人免费看片app下载| 欧美丰满少妇xxxbbb| 国产精品久久久久久久浪潮网站| 午夜精品久久久久久久久久久 | 成人中文字幕电影| 91精品国产综合久久精品| 亚洲欧美一区二区在线观看| 久久精品国产色蜜蜜麻豆| 一本大道久久a久久综合| 欧美电视剧在线观看完整版| 一区二区日韩电影| 成人动漫av在线| 精品国产精品一区二区夜夜嗨| 一级中文字幕一区二区| 成人免费毛片高清视频| 精品国产乱码久久久久久久| 亚洲一区二区三区四区在线观看 | 精久久久久久久久久久| 欧美视频一区二区三区四区 | 欧洲亚洲精品在线| 国产精品久久久久久久岛一牛影视 | 亚洲日本电影在线| 国产成人av电影在线播放| 日韩欧美的一区二区| 天堂资源在线中文精品| 在线看一区二区| 亚洲乱码精品一二三四区日韩在线 | 亚洲国产精品二十页| 国内外成人在线| 欧美成人性福生活免费看| 日本强好片久久久久久aaa| 欧美性xxxxxxxx| 亚洲九九爱视频| 99视频精品全部免费在线| 国产精品日韩成人| 成人久久久精品乱码一区二区三区| 精品久久久网站| 极品销魂美女一区二区三区| 欧美一区二区三区视频在线 | 精品国产麻豆免费人成网站| 免费日本视频一区| 91麻豆精品国产91久久久久久| 婷婷夜色潮精品综合在线| 欧美日韩成人在线一区| 亚洲.国产.中文慕字在线| 欧美三级一区二区| 午夜精品一区二区三区电影天堂 | 波多野结衣精品在线| 中文字幕中文字幕一区| 91最新地址在线播放| 亚洲蜜臀av乱码久久精品 | 欧美揉bbbbb揉bbbbb| 亚洲电影一级片| 日韩一区二区影院| 国产在线精品免费| 国产精品久久久久久久久免费丝袜| 成人黄色在线网站| 一区二区三区免费看视频| 欧美日韩一级二级| 精品一区二区三区日韩| 国产网站一区二区三区| 99久久综合精品| 午夜久久久久久| 精品国产乱码久久久久久蜜臀| 国产在线一区观看| 国产精品视频一二三区 | 欧美日韩一区小说| 精品中文字幕一区二区小辣椒| 精品盗摄一区二区三区| 国产成人精品免费视频网站| 成人免费小视频| 欧美日韩国产经典色站一区二区三区| 日韩和的一区二区| 久久精品一区二区三区不卡牛牛| av在线综合网| 日本不卡一区二区|