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

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

?? smgp.cpp

?? 短信防偽系統服務器端
?? CPP
字號:
// Smgp.cpp: implementation of the CSmgp class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "EasyTradeService.h"
#include "Smgp.h"
#include "md5.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////


void PK_SMGP(SMGP_SUBMIT * pSubmit,
               int*  pk_len,
               char* srcTermid,
               char* destTermid,
               char* chargeTermid,
               int   subType,
               char* feeType,
               char* feecode,
               char* serviceid,
               int   msgFormat,
               int   msgLength,
               char* msgContent)
               
{
    memset(pSubmit, 0, sizeof(SMGP_SUBMIT)); 
    pSubmit->nNeedReport=1;
    pSubmit->nDestTermIdCount= 1;
    pSubmit->nMsgFormat   = msgFormat;
    pSubmit->nMsgLength   = msgLength;
    pSubmit->nMsgType     = subType;
    memcpy(pSubmit->sFeeType, feeType,sizeof(pSubmit->sFeeType)); 
    memcpy(pSubmit->sFeeCode, feecode,sizeof(pSubmit->sFeeCode)); 
    strcpy(pSubmit->sServerId, serviceid); 
    strcpy(pSubmit->sReplyPath,srcTermid);
    strcpy(pSubmit->sDestTermId,destTermid);
    strcpy(pSubmit->sChargeTermId,chargeTermid);
    memcpy(pSubmit->sMsgContent,msgContent,msgLength);
    *pk_len=sizeof(SMGP_HEAD)+sizeof(SMGP_SUBMIT);
    *pk_len= *pk_len- (sizeof(pSubmit->sMsgContent)-msgLength);
}

CSmgp::CSmgp()
{

}

CSmgp::~CSmgp()
{

}
char *CSmgp::BCDToString(char *src,int len, char *dest)
{
    char *decode="0123456789ABCDEF";
    for(int i=0;i<len;i++)
    {
        dest[i*2]=decode[src[i]>>4];
        dest[i*2+1]=decode[src[i]&0X0F];
    }
    dest[i*2]='\0';
    return dest;
}
void CSmgp::OnRecv()
{ 
	int	ret,len,cmdid=0;
	FD_SET	fdset;
	TIMEVAL	timeout;
	timeout.tv_sec = 1;
	timeout.tv_usec= 0;    
    SMGP_HEAD          head; 
    char               recvbuff[512];
    char               szMsgId[24];
    char               szResp[64];
    SMGP_SUBMIT_RESP  *pSubmitResp=0;
    SMGP_DELIVER      *pDeliver=0;
    SMGP_DELIVER_RESP *pDeliverResp=0;
    DELIVER_SMS        deliverSMS;
    MTREPORT_SMS       reportSMS;  
	while(!m_bQuit)
	{
        FD_ZERO( &fdset);
        FD_SET(m_Socket, &fdset);
		ret = select(0,&fdset,NULL,NULL,&timeout);
		if( ret == SOCKET_ERROR)
        {
		     OnSocketError();
             continue;
        }
		if( ret == 0)
        {
            continue; 
        }
        ret =::recv( m_Socket ,(char*)&head, sizeof( SMGP_HEAD ) ,0); 
		if( ret != sizeof( SMGP_HEAD))
        {
            if(ret==0||ret== SOCKET_ERROR)
            {
                OnSocketError();
            }
			continue;
        }
		len= ntohl(head.size ) - sizeof( SMGP_HEAD );
        ret =::recv(m_Socket, recvbuff, len ,0 );
		if( ret != len )
        {  
            if(ret==0||ret==SOCKET_ERROR)
            {
                OnSocketError();
            }
			continue;
        }
		int cmdid=ntohl(head.cmdid);
        switch(cmdid)
        {
            case nSMGP_SUBMIT_RESP: 
                pSubmitResp= (SMGP_SUBMIT_RESP*)recvbuff;
                BCDToString(pSubmitResp->sMsgId, 10, szMsgId);
                OnSubmitResp(ntohl(head.seqid),ntohl(pSubmitResp->nResult),szMsgId);
                break;
            case nSMGP_DELIVER:
                pDeliver=(SMGP_DELIVER*)recvbuff;
                *((SMGP_HEAD *)szResp)=head;
                len=  sizeof( SMGP_HEAD) + sizeof(SMGP_DELIVER_RESP);
                ((SMGP_HEAD *)szResp)->size=htonl(len);
                ((SMGP_HEAD *)szResp)->cmdid=htonl(nSMGP_DELIVER_RESP);
                ((SMGP_DELIVER_RESP *)(szResp+ sizeof( SMGP_HEAD)))->nResult=0;
                memcpy(((SMGP_DELIVER_RESP *)(szResp+ sizeof( SMGP_HEAD)))->sMsgId, pDeliver->sMsgId,10);
                ret=Send(szResp,len);
                if(ret==len)
                {
                    if(pDeliver->nIsReport)      //狀態報告
                    {
                        int nPos=0;char *p=recvbuff; 
                        p=p+3;
                        BCDToString(p,10, reportSMS.smgMsgId);
                        p=p+10;
	                    //p=strstr(p,"submit date:");
                        p=p+12+10;
	                    //p=strstr(p,"done date:");
                        p=p+10+10;
	                    p=strstr(p,"stat:");
                        memcpy(reportSMS.state,p+5,7);p=p+6+7;
	                    p=strstr(p,"err:");           p=p+4;
                        *(p+3)=0;reportSMS.errorCode=atoi(p);      
                        reportSMS.protrol=3;
                        strcpy(reportSMS.corpId,m_szCorpId);
                        strcpy(reportSMS.srcTermid,pDeliver->sSrcTermId);
                        strcpy(reportSMS.destTermid,pDeliver->sDestTermId);
                        OnMTReportSMS(&reportSMS);
                    }
                    else
                    {
                        deliverSMS.protrol=3;
                        strcpy(deliverSMS.corpId,m_szCorpId);
                        deliverSMS.msgFormat=pDeliver->nMsgFormat;
                        strcpy(deliverSMS.srcTermid,pDeliver->sSrcTermId);
                        strcpy(deliverSMS.destTermid,pDeliver->sDestTermId);
                        memcpy(deliverSMS.msgContent,pDeliver->sMsgContent,pDeliver->nMsgLength);
                        deliverSMS.msgContent[pDeliver->nMsgLength]=0;
                        BCDToString(deliverSMS.smgMsgId,10,pDeliver->sMsgId);
                        OnDeliverSMS(&deliverSMS);
                    }
                }
                else
                {
                    if(ret==0||ret==SOCKET_ERROR)
                    {
                        OnSocketError();
                    }
                }
                break;
		    case nSMGP_ACTIVE_TEST:
                head.cmdid=htonl(nSMGP_ACTIVE_TEST_RESP);
                ret=Send((char*)&head,sizeof(SMGP_HEAD));
                if(ret==0||ret==SOCKET_ERROR)
                {
                    OnSocketError();
                }
               break;
            default:
			    break;
        }
    }
}
int CSmgp:: SubmitSMS(SUBMIT_SMS *p ,int len,int seqid)
{
    ((SMGP_HEAD * )(p->pkg))->cmdid = htonl(nSMGP_SUBMIT);
    ((SMGP_HEAD * )(p->pkg))->size  = htonl( len );
    ((SMGP_HEAD * )(p->pkg))->seqid = htonl( seqid );
    return Send(p->pkg,len);
}
void CSmgp::OnSocketError()
{
    int ret;
    EnterCriticalSection( &m_csSocket);
    ret=Connect();
    if(ret==0)
    {
        char szbuff[64];
        char authsrc[24]={0}, szTimeStamp[12]={0};
	    int  nsize = sizeof( SMGP_HEAD) + sizeof( SMGP_LOGIN);
	    ((SMGP_HEAD * )szbuff)->size  = htonl( nsize);
        ((SMGP_HEAD * )szbuff)->cmdid = htonl( nSMGP_LOGIN);
        ((SMGP_HEAD * )szbuff)->seqid = htonl(GetSeqid(0));
        GetTimeStamp(szTimeStamp);
        strcpy(((SMGP_LOGIN*)(szbuff+sizeof( SMGP_HEAD)))->sUser, m_szUser);
        MD5 ctx;
        ctx.update((unsigned char *)m_szUser, strlen(m_szUser));
        ctx.update((unsigned char *)"\0\0\0\0\0\0\0", 7);
        ctx.update((unsigned char *)m_szPwd, strlen(m_szPwd));
        ctx.update((unsigned char *)szTimeStamp, 10);
        ctx.finalize();
        ctx.raw_digest((unsigned char *)((SMGP_LOGIN*)(szbuff+sizeof( SMGP_HEAD)))->sAuthenMD5);
        ((SMGP_LOGIN*)(szbuff+sizeof( SMGP_HEAD)))->nVersion=0x13;
        ((SMGP_LOGIN*)(szbuff+sizeof( SMGP_HEAD)))->nLoginMode=m_nLoginMode;
        ((SMGP_LOGIN*)(szbuff+sizeof( SMGP_HEAD)))->nTimeStamp=htonl(atol(szTimeStamp));
        ret=::send(m_Socket,szbuff, nsize,0 );
    }
    LeaveCriticalSection( &m_csSocket);
}
int  CSmgp::Login()
{
    char szbuff[64];
    char authsrc[24]={0}, szTimeStamp[12]={0};
	int  nsize = sizeof( SMGP_HEAD) + sizeof( SMGP_LOGIN);
	((SMGP_HEAD * )szbuff)->size  = htonl( nsize);
    ((SMGP_HEAD * )szbuff)->cmdid = htonl( nSMGP_LOGIN);
    ((SMGP_HEAD * )szbuff)->seqid = htonl(GetSeqid(0));
    GetTimeStamp(szTimeStamp);
    strcpy(((SMGP_LOGIN*)(szbuff+sizeof( SMGP_HEAD)))->sUser, m_szUser);
    MD5 ctx;
    ctx.update((unsigned char *)m_szUser, strlen(m_szUser));
    ctx.update((unsigned char *)"\0\0\0\0\0\0\0", 7);
    ctx.update((unsigned char *)m_szPwd, strlen(m_szPwd));
    ctx.update((unsigned char *)szTimeStamp, 10);
    ctx.finalize();
    ctx.raw_digest((unsigned char *)((SMGP_LOGIN*)(szbuff+sizeof( SMGP_HEAD)))->sAuthenMD5);
    ((SMGP_LOGIN*)(szbuff+sizeof( SMGP_HEAD)))->nVersion=0x13;
    ((SMGP_LOGIN*)(szbuff+sizeof( SMGP_HEAD)))->nLoginMode=m_nLoginMode;
    ((SMGP_LOGIN*)(szbuff+sizeof( SMGP_HEAD)))->nTimeStamp=htonl(atol(szTimeStamp));
    int ret=Send(szbuff, nsize);
    if(ret== nsize)
    {   
        nsize= sizeof( SMGP_HEAD) + sizeof(SMGP_LOGIN_RESP);
        ret=recv(m_Socket,szbuff,nsize,0);
        if(ret==nsize)
        {
            return ntohl(((SMGP_LOGIN_RESP * )(szbuff + sizeof( SMGP_HEAD)))->nResult); 
        }
        else
        {
            return WSAGetLastError();
        }
    }
    return WSAGetLastError();
}
int  CSmgp::Logout()
{
    SMGP_HEAD head;
    head.size=htonl(sizeof(SMGP_HEAD));
    head.cmdid=htonl(nSMGP_EXIT);
    head.seqid=htonl(GetSeqid(0));
    int ret=Send((char *)&head,sizeof(SMGP_HEAD));
    return 0;
}
int CSmgp::Startup(char *szIp,int port, int login_mode,
            char *szUser,char *szPwd,
            char *szCorpId, char *szSeverNumber,char *szSpNode,
            int  threadpool,int wndsize,
            int  timeout,int trys,
            void (*OnDeliverSMS)(DELIVER_SMS   *pDeliver),
            void (*OnMTReportSMS)(MTREPORT_SMS *pReport),
            void (*OnSubmitedSMS)(SUBMIT_SMS   *pSubmited))
{
    m_OnDeliverSMS=OnDeliverSMS;
    m_OnMTReportSMS=OnMTReportSMS;
    m_OnSubmitedSMS=OnSubmitedSMS;
    strcpy(m_szIp, szIp);
    m_nPort=port ;
    m_nLoginMode= login_mode;
    strcpy(m_szUser,szUser) ;
    strcpy(m_szPwd,szPwd) ;
    if(szCorpId)      strcpy(m_szCorpId, szCorpId);
    if(szSeverNumber) strcpy(m_szSeverNumber,szSeverNumber);
    if(szSpNode)      strcpy(m_szSpNode,szSpNode);
    int ret=Connect();
    if(ret==0)
    {
        ret=Login();
    }
    Initialize(threadpool,wndsize,timeout,trys);
    return ret;
}
int CSmgp::Cleanup()
{
    Logout();
    Close();
    return 0;
}
void CSmgp::OnActive()
{
    int timeActive=0;
    SMGP_HEAD  head;
    while(!m_bQuit)
    {
        Sleep(1000);
        if(timeActive++>= 60 )
        {
            head.cmdid= htonl(nSMGP_ACTIVE_TEST);
            head.seqid= htonl(GetSeqid(0));
            head.size= htonl(sizeof(SMGP_HEAD));
            Send((char *)&head,sizeof(SMGP_HEAD));
            timeActive=0;
        }
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99r国产精品| 中文字幕在线不卡一区| 亚洲精品美国一| 亚洲国产成人精品视频| 亚洲天堂精品视频| 国产成人免费av在线| 日韩一区二区电影| 亚洲国产精品99久久久久久久久| 国产999精品久久久久久| 粉嫩欧美一区二区三区高清影视| 成人激情黄色小说| 国产精品拍天天在线| 麻豆极品一区二区三区| 91丨国产丨九色丨pron| 久久99精品久久久久久| 精品无码三级在线观看视频 | 伊人婷婷欧美激情| 亚洲丰满少妇videoshd| 久久免费看少妇高潮| 成人高清视频在线观看| 久久久精品黄色| 99视频有精品| 欧美v国产在线一区二区三区| 福利电影一区二区三区| 国产在线精品视频| 欧美精品一区二区三区蜜臀| 国产综合一区二区| 日韩亚洲欧美一区二区三区| 成人精品gif动图一区| 欧美一区二区三区的| 国产一区不卡在线| 99久久精品情趣| 亚洲va欧美va人人爽午夜| 日韩欧美另类在线| 久久在线免费观看| 午夜精品视频一区| 精品国产露脸精彩对白| 精品久久久久av影院| 亚洲大片免费看| 国产夜色精品一区二区av| 这里只有精品电影| 欧美日韩一卡二卡| 亚洲午夜精品久久久久久久久| 激情欧美一区二区| 欧美本精品男人aⅴ天堂| 亚洲第一狼人社区| 3751色影院一区二区三区| 91精品国产综合久久福利| 色欲综合视频天天天| 色综合网站在线| 在线影视一区二区三区| 国产精品福利电影一区二区三区四区| 国产精品久久久久天堂| 午夜一区二区三区视频| 久久综合久久鬼色中文字| 久久亚洲私人国产精品va媚药| 精品久久久久久久久久久院品网 | 免费在线观看一区二区三区| 欧美日韩一区小说| 亚洲高清久久久| www成人在线观看| 久久久99精品免费观看不卡| www国产精品av| 欧美一区二区在线观看| 欧美va亚洲va香蕉在线| 精品入口麻豆88视频| 久久精品国产精品亚洲综合| 国产日韩欧美综合一区| 精品一区二区三区视频在线观看| 看电视剧不卡顿的网站| 成人小视频在线| 久久亚洲一级片| 国产精品久久久久久久久果冻传媒| 欧美经典一区二区三区| 亚洲色图20p| 日韩精品一区二区三区在线| 亚洲电影欧美电影有声小说| 久久久久国色av免费看影院| 久久久99精品免费观看| 久久精品国产一区二区三区免费看 | 91蜜桃网址入口| 色婷婷久久综合| 欧美大片顶级少妇| 亚洲免费伊人电影| 亚洲免费av高清| 成人听书哪个软件好| 欧美综合一区二区三区| 午夜精品福利一区二区蜜股av | 色哟哟亚洲精品| 777亚洲妇女| 中文字幕第一区第二区| 亚洲欧洲制服丝袜| 国产麻豆91精品| 久久精品在这里| 亚洲精品va在线观看| 91网页版在线| 91麻豆视频网站| 国内成人免费视频| 日韩欧美一二三四区| 欧美大片顶级少妇| 欧美喷潮久久久xxxxx| 欧美国产日本视频| 欧美亚洲国产一区二区三区| 一区二区免费在线| 亚洲欧美日韩一区二区 | 精品国产不卡一区二区三区| 日韩欧美中文一区| 狠狠色狠狠色综合系列| 高清不卡在线观看av| 成人免费观看视频| 欧美无乱码久久久免费午夜一区| 丝袜美腿高跟呻吟高潮一区| 欧美探花视频资源| 亚洲激情校园春色| 欧美三级欧美一级| 亚洲欧美二区三区| 在线播放日韩导航| 一区二区三区 在线观看视频| 日韩美女久久久| 欧美三电影在线| 欧美疯狂性受xxxxx喷水图片| 日韩精品五月天| 在线观看日韩电影| 国产欧美日韩亚州综合| 亚洲欧美综合色| 日本一区二区三区久久久久久久久不| 国产精品福利一区二区三区| 美女视频黄频大全不卡视频在线播放| 精品国内片67194| 日韩欧美亚洲另类制服综合在线| 日韩av电影免费观看高清完整版 | 欧美aaa在线| 波多野结衣精品在线| 亚洲不卡av一区二区三区| 日韩亚洲欧美高清| 国产91在线观看丝袜| 亚洲精品综合在线| 国产女同性恋一区二区| 欧美日韩在线观看一区二区| www.亚洲人| 国产精品系列在线播放| 日韩国产一二三区| 午夜一区二区三区在线观看| 亚洲激情图片qvod| 亚洲黄色av一区| 亚洲欧美韩国综合色| 亚洲国产精品久久一线不卡| 日日夜夜免费精品| 91麻豆文化传媒在线观看| 狠狠色狠狠色综合系列| 免费人成精品欧美精品| 亚洲成av人**亚洲成av**| 亚洲黄色尤物视频| 国产视频视频一区| 久久久av毛片精品| 国产欧美精品一区二区三区四区| 精品国产一区二区三区久久影院| 日韩欧美久久久| 久久综合九色综合欧美就去吻| 欧美哺乳videos| 久久综合久久久久88| 久久蜜桃av一区二区天堂| 国产情人综合久久777777| 国产精品狼人久久影院观看方式| 国产精品每日更新| 亚洲人成在线观看一区二区| 亚洲美女视频在线| 亚洲国产精品久久艾草纯爱| 图片区小说区国产精品视频| 日本视频一区二区| 高清不卡在线观看| 色综合天天综合网国产成人综合天| 在线看国产一区二区| 88在线观看91蜜桃国自产| 精品少妇一区二区三区在线播放| 国产福利一区二区三区视频在线 | 欧美日韩一级片在线观看| 91蜜桃在线免费视频| 欧美日韩一区二区在线观看| 日韩三级在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 国产精品不卡在线| 日本亚洲天堂网| 不卡高清视频专区| 欧美精品成人一区二区三区四区| 欧美成人高清电影在线| 国产欧美精品区一区二区三区 | 韩国视频一区二区| 91影院在线免费观看| 日韩欧美国产午夜精品| 亚洲丝袜自拍清纯另类| 日韩成人精品在线观看| 成人激情免费网站| 777奇米成人网| 1000部国产精品成人观看| 久久机这里只有精品| 欧洲一区二区三区在线| 国产清纯白嫩初高生在线观看91| 亚洲国产aⅴ天堂久久| 高清日韩电视剧大全免费|