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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sgipapp.cpp

?? 聯通的短信網關平臺。 sp 使用。 如果想自己用vc 開發短信業務
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
#ifdef __DEBUG_API__
					printf("recv a ==BIND== package!\n");
					printf("\tiMsgLen=%d\n"
							"\tiMsgType=%02x\n"
							"\tiMsgid=%u%010d%d\n"
							"\tcLoginType=%d\n"
							"\tcLUserName=%s\n"
							"\tcLUserPwd=%s\n",
							ntohl(pMsg->Head.iMsgLen),
							ntohl(pMsg->Head.iCmdID),
							ntohl(pMsg->Head.sSeqNo.iSrcID),
							ntohl(pMsg->Head.sSeqNo.iDate),
							ntohl(pMsg->Head.sSeqNo.iSeqno),
							pMsg->Body.cLoginType,
							pMsg->Body.cLoginName,
							pMsg->Body.cLoginPwd);
#endif
					
					SEQUENCE_NUM sSequence;
					memset(&sSequence, 0, sizeof(sSequence));
					memcpy(&sSequence, &pMsg->Head.sSeqNo, sizeof(sSequence));
															
					memset(cSendBuf, 0, sizeof(cSendBuf));
					SGIP_BINDRESP_BODY stResp;
					int nBufLen = 0;
					mPackage.DeComposePackage(SGIP_BIND_RESP, (SGIP_MSG_BODY &)stResp, (char *)cSendBuf, &nBufLen);
					SGIP_BINDRESP_MSG *pMsgResp = (SGIP_BINDRESP_MSG *)cSendBuf;
					*(cSendBuf + sizeof(SGIP_HEAD)) = SGIP_LOGIN_RE;
					memcpy(&pMsgResp->Head.sSeqNo, &sSequence, sizeof(sSequence));
					
					if (!pSGIPApp->SendToSMC(nSockfd, cSendBuf, nBufLen))
						printf("Send Bind Response Error!\n");
					
					break;
				}

			case SGIP_UNBIND:
				{
					//SGIP_UNBIND_MSG *pMsg = (SGIP_UNBIND_MSG *)cBuf;
					SGIP_UNBIND_MSG sUBindMsg;
					memset(&sUBindMsg, 0, sizeof(sUBindMsg));
					mPackage.ComposePackage(nMsgType,\
						(SGIP_MSG &)sUBindMsg, (const char *)cBuf);
					SGIP_UNBIND_MSG *pMsg = &sUBindMsg;
#ifdef __DEBUG_API__
					printf("recv a ==UNBIND== package!\n");
#endif
					SEQUENCE_NUM sSequence;
					memset(&sSequence, 0, sizeof(sSequence));
					memcpy(&sSequence, &pMsg->Head.sSeqNo, sizeof(sSequence));
														
					memset(cSendBuf, 0, sizeof(cSendBuf));
					SGIP_MSG_BODY stResp;
					int nBufLen = 0;
					mPackage.DeComposePackage(SGIP_UNBIND_RESP, (SGIP_MSG_BODY &)stResp, (char *)cSendBuf, &nBufLen);
					SGIP_UNBINDRESP_MSG *pMsgResp = (SGIP_UNBINDRESP_MSG *)cSendBuf;
					memcpy(&pMsgResp->Head.sSeqNo, &sSequence, sizeof(sSequence));
					
					if (!pSGIPApp->SendToSMC(nSockfd, cSendBuf, nBufLen))
						printf("Send Unbind Response Error!\n");
					
					close(nSockfd);
					printf("Recv thread id:%ld exit!\n", pthread_self());
					return NULL;
				}

			default:
				{
					printf("Get Error package!\n");
					break;
				}
			}

		}
		else //recv error 
		{
			//close(nSockfd);
			pSGIPApp->DisConnect(nSockfd);
			nSockfd = -1;
			break;
		}
	}

	if (nSockfd > 0)
	{
		pSGIPApp->DisConnect(nSockfd);
		nSockfd = -1;
		//close(nSockfd);
	}

	printf("Recv thread id:%ld exit!\n", pthread_self());
	return NULL;
}

#ifdef __DEBUG_API__

void CSGIPApp::CreateSubmit(SGIP_SUBMIT_BODY &sSubmit)
{
	memset(&sSubmit, 0, sizeof(sSubmit));

	strcpy(sSubmit.cSPNumber, "9868");
	
	//付費號碼,手機號碼前加"86"國別標志;當且僅當群發且對用戶收費時為空;
	//如果為空,則該條短消息產生的費用由UserNumber代表的用戶支付;
	//如果為全零字符串"000000000000000000000",表示該條短消息產生的費用由SP支付。
	strcpy(sSubmit.cChargeNumber, "000000000000000000000");

	//接收短消息的手機數量,取值范圍1至100
	sSubmit.cUserCount = 1;

	//接收該短消息的手機號,該字段重復UserCount指定的次數,手機號碼前加"86"國別標志
	strcpy(sSubmit.cUserNumber, "8613021161729");
		
	//企業代碼,取值范圍0-99999
	strcpy(sSubmit.cCorpId, "90009");

	//業務代碼,由SP定義
	strcpy(sSubmit.cServiceType, "");
	
	//計費類型
	sSubmit.cFeeType = 1;

	//取值范圍0-99999,該條短消息的收費值,單位為分,由SP定義
	//對于包月制收費的用戶,該值為月租費的值
	strcpy(sSubmit.cFeeValue, "000000");	

	//取值范圍0-99999,贈送用戶的話費,單位為分,由SP定義,
	//特指由SP向用戶發送廣告時的贈送話費	
		strcpy(sSubmit.cGivenValue, "000000");

	//代收費標志,0:應收;1:實收
	sSubmit.cAgentFlag = 1;
	
	//引起MT消息的原因
	//	0-MO點播引起的第一條MT消息;
	//	1-MO點播引起的非第一條MT消息;
	//	2-非MO點播引起的MT消息;
	//	3-系統反饋引起的MT消息。		
	sSubmit.cMorelatetoMTFlag = 2;

	//優先級0-9從低到高,默認為0
	sSubmit.cPriority = 0;
	
	//短消息壽命的終止時間,如果為空,表示使用短消息中心的缺省值。
	//時間內容為16個字符,格式為"yymmddhhmmsstnnp" ,其中"tnnp"取固定值"032+",
	//即默認系統為北京時間
	strcpy(sSubmit.cExpireTime, "");
	
	//短消息定時發送的時間,如果為空,表示立刻發送該短消息。
	//時間內容為16個字符,格式為"yymmddhhmmsstnnp" ,其中"tnnp"取固定值"032+",
	//即默認系統為北京時間
	strcpy(sSubmit.cScheduleTime, "");

	/*狀態報告標記
		0-該條消息只有最后出錯時要返回狀態報告
		1-該條消息無論最后是否成功都要返回狀態報告
		2-該條消息不需要返回狀態報告
		3-該條消息僅攜帶包月計費信息,不下發給用戶,要返回狀態報告
		其它-保留
		缺省設置為0
	*/
	sSubmit.cReportFlag = 1;	

	//GSM協議類型。詳細解釋請參考GSM03.40中的9.2.3.9
	sSubmit.cTP_pid = 0;

	//GSM協議類型。詳細解釋請參考GSM03.40中的9.2.3.23,僅使用1位,右對齊
	sSubmit.cTP_udhi = 0;

	/*短消息的編碼格式。
	0:純ASCII字符串
	3:寫卡操作
	4:二進制編碼
	8:UCS2編碼
	15: GBK編碼
	其它參見GSM3.38第4節:SMS Data Coding Scheme*/
	sSubmit.cMessageCoding = 15;	

	/*信息類型:
	0-短消息信息
	其它:待定*/
	sSubmit.cMessageType = 0;
	

	//短消息的內容
	strcpy(sSubmit.cMessageContent, "只供下發的MT短信,僅測試用");
	
	//短消息的長度
	int nLen = MAX_CONTENT_LEN;
	for (int i=MAX_CONTENT_LEN-1; i>=0; i--)
	{
		if (*(sSubmit.cMessageContent+i) == '\0')
			nLen--;
		else
			break;
	}
	sSubmit.iMessageLength = htonl(nLen);
	
	//保留,擴展用
	strcpy(sSubmit.cReserve, "");			
}


int CSGIPApp::SGIPSingleSendDeliver(SGIP_DELIVER_BODY &sDeliver)
{
        char cBuf[5120] = "";
        int nSockfd = -1;

        if ((nSockfd = DoConnect((char *)g_cServerIP, g_iSrvPort)) == END_FAILED)
        {
                return END_FAILED;
        }
        else
                printf("SingleSend DoConnect succeed!\n");

        //發送
        nSubmitTimes = 0;//同一個Submit已發送的次數
        while (nSubmitTimes < 3)//nSubmitRetry)
        {
				nSubmitTimes++;
				memset(&cBuf, 0, sizeof(cBuf));
				int nBufLen = 0;
				m_pkg->DeComposePackage(SGIP_DELIVER, (SGIP_MSG_BODY &)sDeliver, (char *)cBuf, &nBufLen);
			
				while (nSockfd < 0)
                {
                        nSockfd = DoConnect((char *)g_cServerIP, g_iSrvPort);
                        usleep(10);
                }

                int nRecvLen = 0;

			#ifdef __DEBUG_API__
				SGIP_DELIVER_MSG *pDMSG = (SGIP_DELIVER_MSG *)cBuf;
				printf("===========DELIVER=============\n"
					"\tcSrcID=%d\n"
					"\tcDate=%d\n"
					"\tcSeqNo=%d\n"
					"===========END DELIVER=============\n",
					ntohl(pDMSG->Head.sSeqNo.iSrcID),
					ntohl(pDMSG->Head.sSeqNo.iDate),
					ntohl(pDMSG->Head.sSeqNo.iSeqno));
			#endif
				
                if ( !SendToSMC(nSockfd, (const char *)&cBuf, (nBufLen)) )
                {
                        //send err,
                        close(nSockfd);
                        nSockfd = -1;
                        usleep(10);
                        continue;
                }
                else
                {
                        //end
                        printf("Deliver send succeed! start to recv response... ...\n");
                        while (true)
                        {
								nRecvLen = sizeof(cBuf);
                                if ((RecvFromSMC(nSockfd, (char *)cBuf, &nRecvLen, 60)) != END_FAILED)
                                {
                                        unsigned int iMsgType = 0;
                                        if ((iMsgType = m_pkg->GetPackageType((const char *)cBuf)) == SGIP_DELIVER_RESP)
                                                //
                                        {
                                                //recv the deliver resp:
                                                int iRespType = -1;
                                                SGIP_RESP_MSG *pMsg = (SGIP_RESP_MSG *)cBuf;

											#ifdef __DEBUG_API__
												printf("===========DELIVER RESP=============\n"
													"\tcSrcID=%d\n"
													"\tcDate=%d\n"
													"\tcSeqNo=%d\n"
													"\tcResult=%d\n"
													"===========END DELIVER RESP=============\n",
													ntohl(pMsg->Head.sSeqNo.iSrcID),
													ntohl(pMsg->Head.sSeqNo.iDate),
													ntohl(pMsg->Head.sSeqNo.iSeqno),
													pMsg->Body.cResult);
											#endif
												
                                                iRespType = pMsg->Body.cResult;
                                                //if ((iRespType = m_pkg->GetPackageResult((const char *)cBuf)) == 0)
                                                if (iRespType == 0)
                                                {
                                                        DisConnect(nSockfd);
                                                        return END_SUCCEED;
                                                }
                                                else
                                                {
                                                        printf("deliver package error:%d\n", iRespType);
                                                        break;
                                                }
                                        }
                                        else if (iMsgType == SGIP_REPORT)
                                        {
                                                printf("recv a report package!\n");
                                                break;
                                        }
                                        else
                                        {
                                                printf("recv a msg, but no deliver resp! %02x\n", iMsgType);
                                                break;
                                        }
                                }
								else//recv error---break;
									break;
                        }
                }
        }

        DisConnect(nSockfd);
        return END_FAILED;
}

int CSGIPApp::SGIPSingleSendReport(SGIP_REPORT_BODY &sReport)
{
        char cBuf[5120] = "";
        int nSockfd = -1;

        if ((nSockfd = DoConnect((char *)g_cServerIP, g_iSrvPort)) == END_FAILED)
        {
                return END_FAILED;
        }
        else
                printf("SingleSend DoConnect succeed!\n");

        //發送
        nSubmitTimes = 0;//同一個Submit已發送的次數
        while (nSubmitTimes < 3)//nSubmitRetry)
        {
				nSubmitTimes++;
				memset(&cBuf, 0, sizeof(cBuf));
				int nBufLen = 0;
				m_pkg->DeComposePackage(SGIP_REPORT, (SGIP_MSG_BODY &)sReport, (char *)cBuf, &nBufLen);
			

                while (nSockfd < 0)
                {
                        nSockfd = DoConnect((char *)g_cServerIP, g_iSrvPort);
                        usleep(10);
                }

#ifdef __DEBUG_API__
				SGIP_REPORT_MSG *pDMSG = (SGIP_REPORT_MSG *)cBuf;
				printf("===========REPORT=============\n"
					"\tcSrcID=%d\n"
					"\tcDate=%d\n"
					"\tcSeqNo=%d\n"
					"===========END REPORT=============\n",
					ntohl(pDMSG->Head.sSeqNo.iSrcID),
					ntohl(pDMSG->Head.sSeqNo.iDate),
					ntohl(pDMSG->Head.sSeqNo.iSeqno));
#endif
				
                int nRecvLen = 0;
                if ( !SendToSMC(nSockfd, (const char *)&cBuf, nBufLen) )
                {
                        //send err,
                        close(nSockfd);
                        nSockfd = -1;
                        usleep(10);
                        continue;
                }
                else
                {
                        //end
                        printf("Report send succeed! start to recv response... ...\n");
                        while (true)
                        {
								nRecvLen = sizeof(cBuf);
                                if ((RecvFromSMC(nSockfd, (char *)cBuf, &nRecvLen, 60)) != END_FAILED)
                                {
                                        unsigned int iMsgType = 0;
                                        if ((iMsgType = m_pkg->GetPackageType((const char *)cBuf)) == SGIP_REPORT_RESP)
                                                //
                                        {
                                                //recv the deliver resp:
                                                int iRespType = -1;
                                                SGIP_RESP_MSG *pMsg = (SGIP_RESP_MSG *)cBuf;
                                                iRespType = pMsg->Body.cResult;

										#ifdef __DEBUG_API__
												printf("===========REPORT RESP=============\n"
													"\tcSrcID=%d\n"
													"\tcDate=%d\n"
													"\tcSeqNo=%d\n"
													"\tcResult=%d\n"
													"===========END REPORT RESP=============\n",
													ntohl(pMsg->Head.sSeqNo.iSrcID),
													ntohl(pMsg->Head.sSeqNo.iDate),
													ntohl(pMsg->Head.sSeqNo.iSeqno),
													pMsg->Body.cResult);
										#endif
                                                
												if (iRespType == 0)
                                                {
                                                        DisConnect(nSockfd);
                                                        return END_SUCCEED;
                                                }
                                                else
                                                {
                                                        printf("deliver package error:%d\n", iRespType);
                                                        break;
                                                }
                                        }
                                        else if (iMsgType == SGIP_REPORT)
                                        {
                                                printf("recv a report package!\n");
                                                 break;
                                        }
                                        else
                                        {
                                                printf("recv a msg, but no report resp! %02x\n", iMsgType);
                                                break;
                                        }
                                }
								else//recv error---break;
									break;
                        }
                }
        }

        DisConnect(nSockfd);
        return END_FAILED;
}

void CSGIPApp::CreateDeliver(SGIP_DELIVER_BODY &sDeliver)
{
	sDeliver.cMessageCoding = 15;
	strcpy(sDeliver.cMessageContent, "只供上行的MO短信,僅測試用");
	strcpy(sDeliver.cReserve, "");
	strcpy(sDeliver.cSPNumber, "986803");
	sDeliver.cTP_pid = 0;
	sDeliver.cTP_udhi = 0;
	strcpy(sDeliver.cUserNumber, "13021161729");

	int nLen = MAX_CONTENT_LEN;
	for (int i=MAX_CONTENT_LEN-1; i>=0; i--)
	{
		if (*(sDeliver.cMessageContent+i) == '\0')
			nLen--;
		else
			break;
	}
	sDeliver.iMessageLength = htonl(nLen);

	return;
}

void CSGIPApp::CreateReport(SGIP_REPORT_BODY &sReport)
{
	time_t  tt = time(NULL);
	tm *pTime = localtime(&tt);
	char cTime[11] = "";
	memset(cTime, 0, sizeof(cTime));
	sprintf(cTime, "%02d%02d%02d%02d%02d",
			pTime->tm_mon+1, pTime->tm_mday, pTime->tm_hour,
			pTime->tm_min, pTime->tm_sec);
	
	sReport.sSubmitSeqNum.iDate = ntohl(atoi(cTime));
	sReport.sSubmitSeqNum.iSeqno = ntohl(g_nSeqNo);
	sReport.sSubmitSeqNum.iSrcID = ntohl((u_long)atof(g_cSrcID));
	strcpy(sReport.cReserve, "");
	sReport.cState = 2;
	strcpy(sReport.cUserNumber, "8613021161729");
	sReport.ErrorCode = 1;
	sReport.cReportType = 1;
}

#endif

                   

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
波多野结衣91| 麻豆精品一区二区三区| 国产欧美一二三区| 久久综合久久综合久久综合| 欧美挠脚心视频网站| 欧美日韩免费一区二区三区视频| 99精品视频在线观看| 91丨九色丨蝌蚪富婆spa| 色综合一区二区三区| 91成人国产精品| 欧美日韩免费在线视频| 欧美精品久久一区| 精品国产乱码久久| 国产日韩欧美一区二区三区乱码| 国产亚洲一区字幕| 国产精品久久久久久久浪潮网站 | 一区二区三区蜜桃| 丝袜亚洲另类丝袜在线| 麻豆精品新av中文字幕| 国产suv精品一区二区883| av在线免费不卡| 制服视频三区第一页精品| 精品国产精品一区二区夜夜嗨| 久久精品一区二区| 一区二区三区美女视频| 另类小说色综合网站| 成人午夜精品一区二区三区| 欧美日韩视频专区在线播放| 久久久蜜桃精品| 亚洲丝袜自拍清纯另类| 午夜国产精品影院在线观看| 国产精品一级片| 欧美亚洲综合久久| 久久久精品影视| 亚洲日本青草视频在线怡红院| 日韩精品亚洲一区二区三区免费| 精品一区二区国语对白| 一本到不卡精品视频在线观看| 欧美高清dvd| 中文字幕亚洲不卡| 精品一区二区久久久| 欧美自拍偷拍午夜视频| 国产婷婷色一区二区三区在线| 亚洲一区二区欧美激情| 国产成人av一区二区三区在线| 欧美午夜精品一区| 国产精品污www在线观看| 亚洲午夜久久久久中文字幕久| 黄色日韩三级电影| 欧美日韩精品一区视频| 国产精品久久久久毛片软件| 久久精品国产秦先生| 欧美视频在线观看一区二区| 中文字幕高清不卡| 看片网站欧美日韩| 欧美美女网站色| 一区二区三区中文字幕精品精品 | 日韩成人午夜精品| 色一情一伦一子一伦一区| 国产目拍亚洲精品99久久精品| 婷婷久久综合九色综合伊人色| 91热门视频在线观看| 国产视频一区不卡| 国产综合色产在线精品| 日韩美女一区二区三区四区| 午夜电影久久久| 欧美在线999| 亚洲图片欧美色图| 色婷婷精品大视频在线蜜桃视频| 国产精品无人区| 白白色 亚洲乱淫| 亚洲图片另类小说| 不卡av在线网| 亚洲欧美激情在线| 91色视频在线| 一区二区三区四区av| 一本色道综合亚洲| 一区二区三区在线免费视频| 欧洲av在线精品| 亚洲综合丁香婷婷六月香| 欧美伊人久久久久久午夜久久久久| 中文字幕亚洲一区二区va在线| 99久久精品免费| 亚洲在线中文字幕| 欧美日本国产视频| 久久国内精品自在自线400部| 欧美高清激情brazzers| 美国十次综合导航| 国产夜色精品一区二区av| av在线不卡电影| 亚洲一区二区不卡免费| 69久久夜色精品国产69蝌蚪网| 亚洲制服丝袜在线| 欧美一级欧美三级在线观看| 麻豆精品一区二区综合av| 久久美女艺术照精彩视频福利播放 | 欧美视频一区二区三区| 日韩成人av影视| 久久女同精品一区二区| www.av亚洲| 午夜亚洲国产au精品一区二区| 欧美一区二区三区电影| 成人午夜免费视频| 亚洲线精品一区二区三区| 日韩欧美一区二区免费| 国产精品中文有码| 亚洲女与黑人做爰| 26uuu国产电影一区二区| 大白屁股一区二区视频| 亚洲电影一区二区| 久久九九久久九九| 在线观看精品一区| 国产精品一区免费在线观看| 亚洲激情成人在线| 日韩欧美中文字幕一区| www.在线欧美| 国内外成人在线视频| 一区二区欧美在线观看| 久久久久久免费| 欧美优质美女网站| 国产一区二区三区在线看麻豆| 亚洲激情五月婷婷| 国产亚洲一区二区三区在线观看| 色狠狠桃花综合| 大尺度一区二区| 精品一区二区三区免费播放| 亚洲综合色自拍一区| 日本一区二区视频在线观看| 欧美日韩国产综合一区二区三区| 国产成人免费高清| 精品午夜一区二区三区在线观看| 亚洲欧美日韩久久精品| 欧美极品xxx| 精品国产第一区二区三区观看体验| 在线亚洲高清视频| 91天堂素人约啪| 成人ar影院免费观看视频| 国内成+人亚洲+欧美+综合在线 | 久久精品欧美日韩| 日韩一区二区视频| 欧美丝袜丝交足nylons图片| 91网站最新网址| 91小视频在线观看| 色综合久久综合网| 99re视频精品| av亚洲精华国产精华精华| 国产不卡一区视频| 成人免费观看视频| 韩国成人福利片在线播放| 久久精品国产精品亚洲综合| 日本欧美一区二区| 免费不卡在线观看| 久久精品国产亚洲一区二区三区| 六月婷婷色综合| 极品美女销魂一区二区三区免费| 日本欧美肥老太交大片| 男人的j进女人的j一区| 麻豆国产91在线播放| 激情五月婷婷综合| 国产成人在线色| 成年人国产精品| 99re在线精品| 欧美美女喷水视频| 日韩欧美国产成人一区二区| 精品国产青草久久久久福利| 亚洲精品在线免费观看视频| 久久综合一区二区| 欧美国产欧美亚州国产日韩mv天天看完整 | 香港成人在线视频| 欧美aⅴ一区二区三区视频| 国产在线精品视频| 99视频一区二区三区| 欧美综合在线视频| 亚洲二区在线观看| 日韩黄色免费电影| 国产精品自拍一区| 国产精品国产三级国产| 一区二区三区欧美视频| 婷婷中文字幕一区三区| 国产一区美女在线| 91丨porny丨首页| 欧美老女人第四色| 久久精品视频一区二区三区| 亚洲精品乱码久久久久久黑人| 日韩一区精品视频| 成人av集中营| 欧美一区二区国产| ㊣最新国产の精品bt伙计久久| 亚洲成人精品一区| 大白屁股一区二区视频| 欧美另类高清zo欧美| 亚洲国产经典视频| 美女mm1313爽爽久久久蜜臀| 国产91对白在线观看九色| 欧美福利一区二区| 亚洲欧美日韩国产一区二区三区| 免费久久99精品国产| 色婷婷亚洲综合| 国产亚洲精品资源在线26u| 日韩国产精品久久久|