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

📄 smgpfrm.cpp

📁 小灵通短信通讯软件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <IniFiles.hpp>
#pragma hdrstop

#include "SmgpFrm.h"
#include "md5.h"
#include "SmgpApi.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainFrm *MainFrm;
unsigned int sequenceid=0; // 消息流水号,顺序累加,步长为1
int Smgp_Reci_Times=0,Smgp_Send_Times=0,Smgp_Dis_Times=0;//CMPP保持连接的数据参数
//---------------------------------------------------------------------------
__fastcall TMainFrm::TMainFrm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
int SMGP_InitInterface(AnsiString Address,int Port)
{

    MainFrm->SmgpClient->Active=false;
    MainFrm->SmgpClient->Address=Address;
    MainFrm->SmgpClient->Port=Port;
    MainFrm->SmgpClient->Active=true;
    if(MainFrm->SmgpClient->Socket->Connected)
    {
      return 0;
    }
    else
    {
      return 1;
    }
}
//---------------------------------------------------------------------------
int SMGP_CONNECT (AnsiString UserName,AnsiString PassWord,unsigned char LoginMode)
{
if(MainFrm->SmgpClient->Active)
{

   if (sequenceid == 123456789i32)
   {
   sequenceid = 1;
   }
   else
   {
   sequenceid++;
   }

   SMGP_HEADER_BUF* Connect_HEAD;
   SMGP_LOGIN_BUF*  Connect_BODY;
   char*            Connect_BUF;
   int Total_Len;
   Total_Len=sizeof(SMGP_HEADER_BUF)+sizeof(SMGP_LOGIN_BUF);
   Connect_BUF=new char[Total_Len];
   memset(Connect_BUF,0,Total_Len);
   (char*)Connect_HEAD=Connect_BUF;
   Connect_HEAD->Total_Len=htonl(42);
   Connect_HEAD->CommandID=htonl(SMGP_LOGIN);
   Connect_HEAD->SequenceID=htonl(sequenceid);
   (char*)Connect_BODY=Connect_BUF+12;
   strcpy(Connect_BODY->ClientID,UserName.c_str());
   char src[40];
   memset(src,0,40);
   strcpy(src,UserName.c_str());
   memset(src+UserName.Length(),0,7);
   strcpy(src+UserName.Length()+7,PassWord.c_str());
   AnsiString timestamp=FormatDateTime("MMDDHHMMSS",Now());
   strcpy(src+UserName.Length()+7+PassWord.Length(),timestamp.c_str());
   MD5_CTX md5;
   md5.MD5Update(src,UserName.Length()+7+PassWord.Length()+10);
   md5.MD5Final(src);
   memcpy(Connect_BODY->AuthenticatorClient,src,16);
   Connect_BODY->LoginMode=LoginMode;
   Connect_BODY->TimeStamp=htonl(StrToInt(timestamp));
   Connect_BODY->Version=0x13;
   bool ErrorCode;
   ErrorCode=MainFrm->SmgpClient->Socket->SendBuf(Connect_BUF,42);
   delete [] Connect_BUF;
   if(ErrorCode)
   {
     return 0;
   }
   else
   {
     return 4;
   }
}
else
{
   return 1;
}

}
//-----------------------------------------------------------------------------
int SMGP_Submit(LPCTSTR SPNO,LPCTSTR OrgAddr,LPCTSTR DestAddr,LPCTSTR Order,
LPCTSTR FeeType,LPCTSTR FeeCode,unsigned char SubType,unsigned char NeedReport,
unsigned char DCS,unsigned int UD_Len,LPCTSTR UserData)
{
 if(MainFrm->SmgpClient->Active)
 {
  
   if (sequenceid == 123456789i32)
   {
   sequenceid = 1;
   }
   else
   {
   sequenceid++;
   }

   SMGP_HEADER_BUF*  Submit_HEAD;
   SMGP_SUBMIT_BUF*  Submit_BODY;
   char*             Submit_BUF;
   int Total_Len;
   Total_Len=sizeof(SMGP_HEADER_BUF)+sizeof(SMGP_SUBMIT_BUF);
   Submit_BUF=new char[Total_Len];
   memset(Submit_BUF,0,Total_Len);
   (char*)Submit_HEAD=Submit_BUF;
   Submit_HEAD->Total_Len=htonl((Total_Len-252)+UD_Len);
   Submit_HEAD->CommandID=htonl(SMGP_SUBMIT);
   Submit_HEAD->SequenceID=htonl(sequenceid);
   (char*)Submit_BODY=Submit_BUF+12;
   Submit_BODY->SubType=SubType;
   Submit_BODY->NeedReport=NeedReport;
   Submit_BODY->Priority=1;
   strcpy(Submit_BODY->ServiceID,Order);
   strcpy(Submit_BODY->FeeType,FeeType);
   strcpy(Submit_BODY->FeeCode,FeeCode);
   Submit_BODY->MsgFormat=DCS;
   strcpy(Submit_BODY->ValidTime,"");
   strcpy(Submit_BODY->AtTime,"");
   strcpy(Submit_BODY->SrcTermID,SPNO);
   strcpy(Submit_BODY->ChangeTermID,OrgAddr);
   Submit_BODY->DestTermIDCount=1;
   strcpy(Submit_BODY->DestTermID,DestAddr);
   Submit_BODY->MsgLenth=UD_Len;
   memcpy(Submit_BODY->MsgContent,UserData,UD_Len);
   strcpy(Submit_BODY->Reserve,"");
   bool ErrorCode;
   ErrorCode=MainFrm->SmgpClient->Socket->SendBuf(Submit_BUF,Total_Len-252+UD_Len);
   delete [] Submit_BUF;
   if(ErrorCode)
   {
     return 0;
   }
   else
   {
     return 4;
   }
   
 }
 else
 {
   return 1;
 }

}
//------------------------------------------------------------------------------
int SMGP_Query(LPTSTR QueryTime,unsigned int QueryType,LPTSTR QueryCode)
{
 if(MainFrm->SmgpClient->Active)
 {
   if (sequenceid == 123456789i32)
   {
   sequenceid = 1;
   }
   else
   {
   sequenceid++;
   }

   SMGP_HEADER_BUF* Query_HEAD;
   SMGP_QUERY_BUF*  Query_BODY;
   char*            Query_BUF;
   int Total_Len;
   Total_Len=sizeof(SMGP_HEADER_BUF)+sizeof(SMGP_QUERY_BUF);
   Query_BUF=new char[Total_Len];
   memset(Query_BUF,0,Total_Len);
   (char*)Query_HEAD=Query_BUF;
   Query_HEAD->Total_Len=htonl(19);
   Query_HEAD->CommandID=htonl(SMGP_QUERY);
   Query_HEAD->SequenceID=htonl(sequenceid);
   (char*)Query_BODY=Query_BUF+12;
   strcpy(Query_BODY->Query_Time,QueryTime);
   Query_BODY->Query_Type=QueryType;
   strcpy(Query_BODY->Query_Code,QueryCode);
   bool ErrorCode;
   ErrorCode=MainFrm->SmgpClient->Socket->SendBuf(Query_BUF,19);
   delete [] Query_BUF;
   if(ErrorCode)
   {
     return 0;
   }
   else
   {
     return 4;
   }
 }
 else
 {
   return 1;
 }
}
//----------------------------------------------------------------------------
int SMGP_ActiveTest()
{
  if(MainFrm->SmgpClient->Active)
  {
  if (sequenceid == 123456789i32)
   {
   sequenceid = 1;
   }
   else
   {
   sequenceid++;
   }

   SMGP_HEADER_BUF* NetActive_BUF;
   NetActive_BUF=new SMGP_HEADER_BUF;
   memset(NetActive_BUF,0,12);
   NetActive_BUF->Total_Len=htonl(12);
   NetActive_BUF->CommandID=htonl(SMGP_ACTIVE_TEST);
   NetActive_BUF->SequenceID=htonl(sequenceid);
   bool ErrorCode;
   ErrorCode=MainFrm->SmgpClient->Socket->SendBuf(NetActive_BUF,12);
   delete NetActive_BUF;
   if(ErrorCode)
   {
     return 0;
   }
   else
   {
     return 4;
   }
  }
  else
  {
    return 1;
  }
}
//-----------------------------------------------------------------------------
int SMGP_Exit()
{
  if(MainFrm->SmgpClient->Active)
  {
    if (sequenceid == 123456789i32)
     {
     sequenceid = 1;
     }
    else
     {
     sequenceid++;
     }

     SMGP_HEADER_BUF* Exit_BUF;
     Exit_BUF=new SMGP_HEADER_BUF;
     memset(Exit_BUF,0,12);
     Exit_BUF->Total_Len=htonl(12);
     Exit_BUF->CommandID=htonl(SMGP_EXIT);
     Exit_BUF->SequenceID=htonl(sequenceid);
     bool ErrorCode;
     ErrorCode=MainFrm->SmgpClient->Socket->SendBuf(Exit_BUF,12);
     delete Exit_BUF;
     if(ErrorCode)
     {
       return 0;
     }
     else
     {
       return 4;
     }
  }
  else
  {
    return 1;
  }
}
//----------------------------------------------------------------------------
int SMGP_NetActive(unsigned int Sequenceid)
{
  if(MainFrm->SmgpClient->Active)
  {

     SMGP_HEADER_BUF* NetActive_BUF;
     NetActive_BUF=new SMGP_HEADER_BUF;
     memset(NetActive_BUF,0,12);
     NetActive_BUF->Total_Len=htonl(12);
     NetActive_BUF->CommandID=htonl(SMGP_ACTIVE_TEST_RESP);
     NetActive_BUF->SequenceID=htonl(sequenceid);
     bool ErrorCode;
     ErrorCode=MainFrm->SmgpClient->Socket->SendBuf(NetActive_BUF,12);
     delete NetActive_BUF;
     if(ErrorCode)
     {
       return 0;
     }
     else
     {
       return 4;
     }
  }
  else
  {
    return 1;
  }
}
//----------------------------------------------------------------------------
int SMGP_DeliverResp(unsigned int DelivSequenceid,unsigned char MsgID,unsigned int Status)
{
  if(MainFrm->SmgpClient->Active)
  {
     SMGP_HEADER_BUF*        DeliverResp_HEAD;
     SMGP_DELIVER_RESP_BUF*  DeliverResp_BODY;
     char*                   DeliverResp_BUF;
     int Total_Len;
     Total_Len=sizeof(SMGP_HEADER_BUF)+sizeof(SMGP_DELIVER_RESP_BUF);
     DeliverResp_BUF=new char[Total_Len];
     memset(DeliverResp_BUF,0,Total_Len);
     (char*)DeliverResp_HEAD=DeliverResp_BUF;
     DeliverResp_HEAD->Total_Len=htonl(Total_Len);
     DeliverResp_HEAD->CommandID=htonl(SMGP_DELIVER_RESP);
     DeliverResp_HEAD->SequenceID=htonl(DelivSequenceid);
     (char*)DeliverResp_BODY=DeliverResp_BUF+12;
     DeliverResp_BODY->MsgID=MsgID;
     DeliverResp_BODY->Status=Status;
     bool ErrorCode;
     ErrorCode=MainFrm->SmgpClient->Socket->SendBuf(DeliverResp_BUF,Total_Len);
     delete DeliverResp_BUF;
     if(ErrorCode)
     {
       return 0;
     }
     else
     {
       return 4;
     }
  }
  else
  {
    return 1;
  }
}
//----------------------------------------------------------------------------
void __fastcall TMainFrm::Log(int type,AnsiString LogContent)
{
if(mmlog->Lines->Count>=200)
{
SaveLog();
}

mmlog->Lines->Add(DateTimeToStr(Now())+":  "+LogContent);

switch (type)
{
    case 0:       //一般信息提示
      {
       mmlog->SelStart=mmlog->Text.Length()-LogContent.Length()-2;
       mmlog->SelLength=LogContent.Length()+2;
       mmlog->SelAttributes->Size=10;
       mmlog->SelAttributes->Color=clWhite;
       break;
      }
    case 1:            //出错告警信息提示
      {
       mmlog->SelStart=mmlog->Text.Length()-LogContent.Length()-2;
       mmlog->SelLength=LogContent.Length()+2;
       mmlog->SelAttributes->Size=12;
       mmlog->SelAttributes->Color=clRed;

      break;
      }
    case 2:           //CMPP协议所有信息提示
      {
       mmlog->SelStart=mmlog->Text.Length()-LogContent.Length()-2;
       mmlog->SelLength=LogContent.Length()+2;
       mmlog->SelAttributes->Size=10;
       mmlog->SelAttributes->Color=clYellow;
      break;
      }
    case 3:          //所有上行信息处理信息提示
      {
       mmlog->SelStart=mmlog->Text.Length()-LogContent.Length()-2;
       mmlog->SelLength=LogContent.Length()+2;

⌨️ 快捷键说明

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