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

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

?? smgp3.c

?? 基于上海電信 sgmp3.0短信協(xié)議,實現(xiàn)的源程序,現(xiàn)網(wǎng)運行穩(wěn)定,unix (freeBSD) 環(huán)境下編程.
?? C
?? 第 1 頁 / 共 5 頁
字號:
					}
				}
				else
				{	
					INFO("[INFO-OnlyRecv:%u] RECV DATA %d\n", threadsnum, recv_len);
					buffersize += recv_len;
				}
		    	}
		}

		
//		INFO("[INFO-RECV:%u] Buffersize:%d resqnum:%d\n", threadsnum , buffersize, resqnum);
//		if( (buffersize >= LEN_SGIP_HEADER ) &&  (resqnum >0) )
		while(buffersize>=LEN_SMGP_HEAD)
		{
			
			n = GetMessageHead( socketbuffer, &Body_Length, &Command_ID, &R_Seq);
			buffersize = buffersize - LEN_SMGP_HEAD;
			INFO("[INFO-OnlyRecv:%u] buffsersize:%d Command_ID:%08x Body_Length:%d \n", threadsnum, buffersize, Command_ID, Body_Length);
			memmove(socketbuffer , socketbuffer+LEN_SMGP_HEAD, buffersize);
			if( buffersize < Body_Length )
			{
				usleep(1000*500);
				recv_len = recv(Rsocket_fd, socketbuffer+buffersize, socketbuffersize-buffersize-1, 0);
				if(recv_len> 0)
					buffersize += recv_len; 
				INFO("[INFO-OnlyRecv:%u] buffersize < Body_Length,restart recv, buffersize=%d\n", threadsnum, buffersize);
			}
			
			if(Command_ID == ID_SMGP_LOGIN_RESP)	//登陸請求響應(yīng)
			{
				// Bind Resp
				n = RecvLoginResp(socketbuffer,  Body_Length, &Status, &Version);
				buffersize -= Body_Length;
				memmove(socketbuffer, socketbuffer+Body_Length, buffersize );
				INFO("[INFO-OnlyRecv:%u] login resp Recv ,chang login status lock\n", threadsnum );
				if(Status == 0)
				{
					INFO("[INFO-OnlyRecv:%u] login resp Recv ,chang login status unlock.\n", threadsnum );
				}
				else
				{
					close(Rsocket_fd);
					Rsocket_fd = -1;
					INFO("[INFO-OnlyRecv:%u] login resp Recv ,Status :%d login err \n", threadsnum, Status);
				}
			}
			else if(Command_ID == ID_SMGP_ACTIVE_TEST )
			{
				if (ActiveTestResp(Rsocket_fd, R_Seq) != 0) {
            				INFO("[INFO-OnlyRecv:%u]: ERR:SEND ACTIVE_TEST_RESP FAILED\n",  threadsnum);
            				close(Rsocket_fd);
					Rsocket_fd = -1;
        			}
        			INFO("[INFO-OnlyRecv:%u]: CONNECTION IS OK. R: 0x%08x\n", threadsnum, R_Seq);
			}
			else if(Command_ID == ID_SMGP_ACTIVE_TEST_RESP)
			{
        			INFO("[INFO-OnlyRecv:%u]: CONNECTION IS OK. S: 0x%08x NSR(未響應(yīng)): %-4d\n", threadsnum, R_Seq, NeedSubmitResp);
			}
			else if(Command_ID == ID_SMGP_SUBMIT_RESP)
			{
				INFO("[INFO-OnlyRecv:%u]:[ERR] only for recving MO or REPORT", threadsnum);
			}
			else if(Command_ID == ID_SMGP_DELIVER)
			{
			        memset(&deliver, 0, sizeof(deliver));
			        if (DeliverGet(socketbuffer, &deliver,Body_Length) != 0) {
			            INFO("[INFO-OnlyRecv:%u][-ERR]: RECV DELIVER FAILED\n", threadsnum);
			            	close(Rsocket_fd);
					Rsocket_fd = -1;
			        }
			        buffersize -= Body_Length;
			        if(buffersize < 0)
			        {
					INFO("[INFO-OnlyRecv:%u][-ERR]: buffersize<0, exit\n", threadsnum);
					exit(0);
			        }
				 memmove(socketbuffer, socketbuffer+Body_Length, buffersize );
				
				//如果接收號碼有118,去掉后再插入recv_q
				
				INFO("[INFO-OnlyRecv:%u]before:DestTermID=%s\n", threadsnum, deliver.DestTermID);
				if ( strncmp(deliver.DestTermID,"118",3) == 0 ) {
					char dest[21+1];
							
					memset(dest,0,22);
					strcpy(dest,deliver.DestTermID);
					memset(deliver.DestTermID,0,22);
					strcpy(deliver.DestTermID,dest+3);
							
				}
				INFO("[INFO-OnlyRecv:%u]after:DestTermID=%s deliver.IsReport:%d\n", threadsnum, deliver.DestTermID,deliver.IsReport);

				
				if (deliver.IsReport == 0) 
				{	
				     memset(sqlbuf, 0, sizeof(sqlbuf));
			             mysql_escape_string(sqlbuf, deliver.MsgContent, strlen(deliver.MsgContent)) ;
				     //INFO("[INFO-RECV:%u] DEBUG LinkID:[%s]\n",threadsnum, LinkID); 
				    memset(LinkID, 0, sizeof(LinkID));
				    SubmitType=0;
			            if(unparse_packet_1(deliver.Paramater, deliver.ParamaterLen,LinkID, &SubmitType,&DealResult) !=0 )
			            {
			                INFO("[INFO-OnlyRecv:%u][ERR]: unparse_packet_1 ERR %s\n", threadsnum, deliver.Paramater);
			                break;
			            }
			            INFO("[INFO-RECV:%u] SubmitType:[%d] LinkID:[%s]\n",threadsnum,SubmitType, LinkID); 
			            if( SubmitType==13 || SubmitType==15) 
			            {            	
			            		if( SubmitType==13 )
			            		{
							sprintf(query_string, "insert into %s.recv_q values(NULL,'%s','%s',now(),'%s','0','%s','4','0','%s')",
			                          		send_q_db,deliver.SrcTermID, sqlbuf, deliver.DestTermID,LinkID,"13" );
			            		}
			            		else if( SubmitType==15 )
			            		{
							sprintf(query_string, "insert into %s.recv_q values(NULL,'%s','%s',now(),'%s','0','%s','4','0','%s')",
			                          		send_q_db,deliver.SrcTermID, sqlbuf, deliver.DestTermID,LinkID,"15" );
			            		}
			            		INFO("[INFO-OnlyRecv:%u]: SubmitType is 13 or 15:%s", threadsnum, query_string );
			                   	ret= mysql_real_query(&recv_mysql, query_string, strlen(query_string));	
					  	if ( ret !=0 )
					  	{
					                INFO("[-ERR]: sql_query: %s\n", mysql_error (&recv_mysql));
					                exit(-1);
				          	}
			                          
			            } else 
			            if( SubmitType==5 )   //包月扣費結(jié)果通知.
			            {
			            	//MsgContent:09918061574  ,DXXDG ,20060601,20060630,0,001500
			            	//oper databases; insert smc_result.
			            	
			            	char smcBuf[256];            	            	
			            	char mobile[21]="";
			            	char service[20]="";
			            	char date1[16]="";
			            	char date2[16]="";
			            	char status[6]="";
			            	char feecode[8]="";
			            	int  ret2=1;   
			            	       	 
			            	memset( smcBuf ,0 ,sizeof(smcBuf)); 
			            	strcpy( smcBuf ,deliver.MsgContent );
			            	           	
			            	INFO("[INFO-OnlyRecv:%u][BYKF]: SrcTermID:%s ,DestTermID:%s ,LinkID:%s smcBuf=%s\n",
			            	      threadsnum, deliver.SrcTermID, deliver.DestTermID ,LinkID ,smcBuf);
			            	
			            	ret2=GetSmcNotice( smcBuf , mobile , service ,date1 ,date2 ,status,feecode );

			            	//---------------------------------add by 2006-06-12
					sprintf(query_string, "insert into %s.smc_result values(NULL,now(),'%s','%s','%s','%s','%s','%s','')",
			                          send_q_db, mobile ,service ,feecode ,status,date1 ,date2);
			            	INFO("[INFO-OnlyRecv:%u]: SubmitType is 5:%s", threadsnum, query_string );
			              ret= mysql_real_query(&recv_mysql, query_string, strlen(query_string));	
					if ( ret !=0 )
					{
						INFO("[-ERR]: sql_query: %s\n", mysql_error (&recv_mysql));
					       exit(-1);
				        }
			                     	
			            } 
			            else //MO
			            {	
			            	if(strlen(deliver.SrcTermID) < 8)
			            	{
			            	  	sprintf(query_string, "insert into %s.recv_q values(NULL,'%s','%s',now(),'%s','0','%s','5','0','%s')",
			                          		send_q_db,deliver.SrcTermID, sqlbuf, deliver.DestTermID,LinkID,"0" );
						INFO("[INFO-OnlyRecv:%u]: SQL query:%s\n", threadsnum, query_string );
			            	  }
					else{
				            	  sprintf(query_string, "insert into %s.recv_q values(NULL,'%s','%s',now(),'%s','0','%s','0','0','0')",
				                          send_q_db,deliver.SrcTermID, sqlbuf, deliver.DestTermID, LinkID ); 
				            	  INFO("[INFO-OnlyRecv:%u]: MO:%s", threadsnum, query_string );
					}
			                ret= mysql_real_query(&recv_mysql, query_string, strlen(query_string));	
					  if ( ret !=0 )
					  {
						INFO("[-ERR]: sql_query: %s\n", mysql_error (&recv_mysql));
					       exit(-1);
				         }
			                
			            }
			            
			        } 
				else {			//狀態(tài)報告
			            char stat[8];
			            char err[8];
			            char temp[21];
			            char MsgID[11];

			            memset(stat,0,sizeof(stat));
			            memset(temp,0,sizeof(temp));
			            memset(MsgID,0,sizeof(MsgID));
			            memset(err, 0, sizeof(err));
			            n = GetStatus(deliver.MsgContent, MsgID, stat, err);
			            BCD2ASCII(temp, MsgID,10);
			            if (n == 1) { // 取狀態(tài)報告成功
			                INFO("[INFO-OnlyRecv:%u]: REPORT: stat: %s err: %s msgid: %s\n", threadsnum, stat, err, temp);
			                sprintf(query_string, "insert into %s.report_q(rq_id, rq_sequence, rq_mobile, rq_state, rq_code, rq_date, rq_provider, rq_flag)"
			                		"values(NULL,'%s','%s','0','%s',now(),'0', '0')", send_q_db, temp, deliver.SrcTermID, err);
			                INFO("[INFO-OnlyRecv:%u]: REPORT SQL:%s\n", threadsnum, query_string);
			                ret = mysql_real_query(&recv_mysql, query_string, strlen(query_string));
					  if ( ret !=0 ) {
				                INFO("[INFO-OnlyRecv:%u][-ERR]: fsql_query: %s\n", threadsnum, mysql_error (&recv_mysql));
				                exit(-1);
				          }
			            } else {
			                BCD2ASCII(temp, deliver.MsgID, 10);
			                INFO("[INFO-OnlyRecv:%u][-ERR]: DELIVER: MsgID: %s SRC: %s DEST: %s ISREPORT: %d content=%s\n",
			                        threadsnum, temp, deliver.SrcTermID, deliver.DestTermID, deliver.IsReport, deliver.MsgContent);
			            }
			        }
			        if (DeliverResp(Rsocket_fd, R_Seq, deliver.MsgID, 0) != 0) {
			            INFO("[INFO-OnlyRecv:%u][-ERR]: SEND DELIVER_RESP FAILED\n", threadsnum);
			            	close(Rsocket_fd);
					Rsocket_fd = -1;
			        }
			}
			else
			{
				// other data
				INFO("[INFO-OnlyRecv:%u] Recv unknown data, Command_ID:%08x ,Body_Length :%d \n", threadsnum, Command_ID, Body_Length);
				if(Body_Length >0)
				{	
					buffersize -= Body_Length;
					memmove(socketbuffer, socketbuffer + Body_Length , buffersize);
				}
				else
				{
					close(Rsocket_fd);
					Rsocket_fd = -1;
				}
			}

		}
		
		
	    	while(Rsocket_fd <=0)
	    	{
	    		Rsocket_fd = ConnectISMG(R_Seq, cn, threadsnum, smg_recv_type);
			INFO("[INFO-OnlyRecv:%u] Rsocket_fd :%d\n", threadsnum , Rsocket_fd);
			if(Rsocket_fd >0)
			{
				INFO("[INFO-OnlyRecv:%u]  ConnectISMG SUCCESS\n", threadsnum);
				
			}
			else
			{
		  		recvtime.tv_sec  =  time(NULL)+5;    
		              recvtime.tv_nsec  =  0;  
				pthread_mutex_lock(&recvlock);
				ret  =  pthread_cond_timedwait(&recvcond,  &recvlock,(const  struct  timespec  *)&recvtime);  
		 		if(ret !=0 )
				{
					INFO("[INFO-RECV:%u]: Connect ISMG failed , wait 5 sec  .\n", threadsnum);
					pthread_mutex_unlock(&recvlock);
				}
			}
	    	}
		
		if(buffersize ==0 )
		{
	  		recvtime.tv_sec  =  time(NULL)+1;
	              recvtime.tv_nsec  =  0;
			pthread_mutex_lock(&recvlock);
			ret  =  pthread_cond_timedwait(&recvcond,  &recvlock, (const  struct  timespec  *)&recvtime);
	 		if(ret !=0 )
			{
				INFO("[INFO-OnlyRecv:%u]:  NO data ,wait 1 sec  .\n", threadsnum);
				pthread_mutex_unlock(&recvlock);
			}
		}
	}
}


void *Recv(int *argu)
{
	int n=0;
    	int Status=0,ret = 0;
    	int Version = 0;
    	unsigned char t_MsgID[40],MsgID[40]; 
    	SMGP_DELIVER deliver;
    	int Rsocket_fd=0, recv_len= 0; 
    	char bufferrecv[1024]="";
    	unsigned int Command_ID=0;
    	pthread_t threadsnum=0;
    	unsigned int R_Seq = 0;
    	unsigned int Body_Length=0;
    	int cn= 0, connectionnum = 0,i =0;
    	struct timespec recvtime;
	pthread_mutex_t recvlock = PTHREAD_MUTEX_INITIALIZER;
   	pthread_cond_t  recvcond = PTHREAD_COND_INITIALIZER;
	char *socketbuffer = NULL;
	int bufferoffset =0, buffersize=0;
	RES_Q resqtmp;
    	struct tm *tp;
    	time_t timep;
	int resqnum =0;
	char sqlbuf[1024];
	char query_string[1024];
	MYSQL recv_mysql;
	unsigned char DealResult =0;
    	unsigned char LinkID[21];
    	unsigned char SubmitType=0;
	
    	threadsnum = pthread_self();
    	pthread_detach(threadsnum);
	
    	cn = argu[1]; // 連接號
	INFO("[INFO-RECV:%u] RECV Thread START\n", threadsnum);

	/*連接recv_q, report_q所在數(shù)據(jù)庫*/
	
	if(!mysql_init(&recv_mysql))
	{
		INFO("[INFO-RECV:%u][-ERR} init mysql error \n", threadsnum);
		exit(-1);
    	}
    	if (!mysql_real_connect(&recv_mysql, send_q_host, send_q_user, send_q_pass, send_q_db, send_q_port, NULL, 0) ) 
	{
        	INFO("[INFO-RECV:%u][-ERR] sql_connect: %s\n", mysql_error(&recv_mysql));
        	exit(-1);
    	}
	socketbuffer = malloc(socketbuffersize);
	if(socketbuffer == NULL)
	{
		INFO("[INFO-RECV:%u] malloc error .\n", threadsnum);
		socketbuffer = malloc(socketbuffersize);
	}
	buffersize = 0;
    	INFO("[INFO-RECV:%u]: Recv thread start!\n", threadsnum);
    	while(1)
	{
		//INFO("[INFO-RECV:]1Rsocket_fd = %d\n", Rsocket_fd);
		if( HaveData(Rsocket_fd) > 0 )
		{
			// have data to receive
			INFO("[INFO-RECV:] have-data-to-receive\n");
			//INFO("[INFO-RECV:]2Rsocket_fd = %d\n", Rsocket_fd);
		    	if( buffersize < socketbuffersize)
		    	{
				//INFO("[INFO-RECV:]3Rsocket_fd = %d\n", Rsocket_fd);
				//INFO("[INFO-RECV:]socketbuffersize-buffersize-1 = %d\n", socketbuffersize-buffersize-1);
				//INFO("[INFO-RECV:]buffersize = %d\n", buffersize);
				//INFO("[INFO-RECV:]socketbuffer = %s\n", socketbuffer);
				recv_len = recv(Rsocket_fd, socketbuffer+buffersize, socketbuffersize-buffersize-1, 0);
				//INFO("[INFO-RECV:]4Rsocket_fd = %d\n", Rsocket_fd);
				if(recv_len <= 0)
				{
					// reconnect
					INFO("[INFO-RECV:] errno = %d\n", errno);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品视频123区在线观看| 99精品久久99久久久久| 亚洲同性同志一二三专区| 精品人伦一区二区色婷婷| 91久久香蕉国产日韩欧美9色| 国产精品69毛片高清亚洲| 日本在线不卡一区| 亚洲成人免费av| 亚洲高清三级视频| 亚洲午夜久久久久久久久电影网| 日韩美女视频19| 国产精品丝袜黑色高跟| 久久日韩精品一区二区五区| 久久看人人爽人人| 精品免费国产二区三区| 欧美不卡一二三| 精品国偷自产国产一区| 精品少妇一区二区三区视频免付费 | ...av二区三区久久精品| 久久久久久9999| 国产午夜亚洲精品午夜鲁丝片| 久久久国产精品午夜一区ai换脸| 久久午夜电影网| 精品少妇一区二区三区日产乱码| 精品国产乱码久久久久久牛牛| 26uuu欧美| 久久久久久久网| 国产精品电影一区二区三区| 亚洲日本成人在线观看| 一区二区在线观看视频在线观看| 亚洲国产精品一区二区久久恐怖片| 午夜精品一区二区三区三上悠亚| 蜜臀久久99精品久久久久宅男| 麻豆精品一区二区三区| 97精品久久久午夜一区二区三区| 91尤物视频在线观看| 欧美色视频在线观看| 精品国产一区二区在线观看| 国产精品网站导航| 亚洲六月丁香色婷婷综合久久 | 欧美中文字幕不卡| 欧美久久免费观看| 精品国产乱码久久久久久久久| 国产欧美日韩不卡| 亚洲国产一二三| 国产一区二区三区不卡在线观看| 91麻豆蜜桃一区二区三区| 欧美日韩中文字幕一区二区| 精品美女一区二区| 亚洲免费观看高清完整| 久久精品国产亚洲一区二区三区| av在线不卡免费看| 在线不卡免费欧美| 国产精品情趣视频| 日韩电影在线观看一区| 99国产精品久久久| 精品久久免费看| 亚洲免费观看在线视频| 九色综合狠狠综合久久| 日本乱码高清不卡字幕| 国产色产综合产在线视频| 午夜欧美一区二区三区在线播放| 风间由美一区二区三区在线观看 | 日日噜噜夜夜狠狠视频欧美人| 成年人国产精品| 精品国产一区二区三区av性色| 亚洲最大成人网4388xx| 成人性生交大片免费看在线播放| 日韩视频一区二区三区| 亚洲一级电影视频| 99视频精品在线| 国产日韩欧美在线一区| 日本成人在线看| 欧美日韩一区二区三区四区五区| 亚洲欧美另类综合偷拍| 成人一区在线观看| 欧美精品一区二区三区在线播放 | 精品免费日韩av| 亚洲电影在线免费观看| 91麻豆精品国产自产在线| 亚洲二区在线观看| 在线观看日韩毛片| 亚洲精品免费电影| 一本大道av一区二区在线播放| 国产精品免费视频一区| 粉嫩蜜臀av国产精品网站| 国产日韩v精品一区二区| 国产在线精品一区二区| 久久久国际精品| 国产一区二区三区蝌蚪| 久久亚洲一区二区三区明星换脸| 久久99蜜桃精品| 日韩区在线观看| 国产一区亚洲一区| 国产丝袜美腿一区二区三区| 成人夜色视频网站在线观看| 中文字幕免费一区| 成人国产精品免费观看动漫 | 国产精品国产三级国产专播品爱网| 国产99精品在线观看| 国产精品少妇自拍| 91首页免费视频| 亚洲高清免费观看| 欧美一区在线视频| 精品一区二区三区在线视频| 欧美激情一区二区在线| 不卡的av中国片| 亚洲午夜国产一区99re久久| 91麻豆精品国产91久久久久久 | 看电视剧不卡顿的网站| 久久亚洲精品国产精品紫薇| 成人黄色综合网站| 一区二区三区日本| 日韩欧美国产一二三区| 国产永久精品大片wwwapp| 国产精品国产精品国产专区不片| 91成人免费电影| 蜜桃久久精品一区二区| 国产精品日产欧美久久久久| 在线视频你懂得一区二区三区| 久久精品国产在热久久| 国产精品美女一区二区在线观看| 精品视频在线看| 国产.欧美.日韩| 首页国产欧美日韩丝袜| 中文字幕精品在线不卡| 欧美日韩激情在线| 国产成人啪免费观看软件 | 色婷婷狠狠综合| 麻豆精品久久久| 亚洲精选一二三| 久久亚洲综合av| 欧美男生操女生| 91婷婷韩国欧美一区二区| 日本aⅴ精品一区二区三区| 国产精品福利av| 久久久久一区二区三区四区| 欧美午夜视频网站| 国产乱一区二区| 秋霞电影一区二区| 一区二区视频在线看| 久久久久久久久久久久久久久99| 在线成人小视频| 99re成人在线| 国产69精品久久777的优势| 青青草国产成人av片免费| 亚洲视频电影在线| 国产蜜臀97一区二区三区| 91麻豆精品国产91久久久使用方法| 色域天天综合网| 大尺度一区二区| 国产一区二区三区精品视频| 日韩av高清在线观看| 一区二区三区久久| 国产精品国产馆在线真实露脸 | 久久免费电影网| 欧美一卡2卡3卡4卡| 在线视频欧美精品| 91亚洲精品久久久蜜桃| 波波电影院一区二区三区| 国产精品一级片| 国产成人在线观看免费网站| 狠狠色综合播放一区二区| 日本不卡一区二区三区高清视频| 香蕉乱码成人久久天堂爱免费| 亚洲最新在线观看| 亚洲伊人伊色伊影伊综合网| 亚洲一区二区欧美激情| 亚洲精品乱码久久久久久久久 | 欧美在线看片a免费观看| 精品视频一区二区三区免费| 8x8x8国产精品| 欧美猛男超大videosgay| 欧美日韩精品免费| 欧美一区二区三区电影| 欧美一卡在线观看| 精品久久五月天| 一区在线播放视频| 日韩理论片一区二区| 一区二区三区免费网站| 亚洲国产一区二区视频| 日韩av在线播放中文字幕| 麻豆精品视频在线观看视频| 国产电影精品久久禁18| 国产激情视频一区二区在线观看| 波多野结衣中文字幕一区二区三区| 99久久久久免费精品国产 | 91精彩视频在线观看| 欧美美女网站色| 久久久欧美精品sm网站| 国产精品日产欧美久久久久| 一区二区三区欧美日| 奇米一区二区三区| 成人天堂资源www在线| 色综合久久久久久久久久久| 欧美一区二区三区影视| 久久久国产精品午夜一区ai换脸| 亚洲美女少妇撒尿| 免费成人小视频| 97久久人人超碰|