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

📄 main.cpp

📁 提供vc版短信网关源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "main.h"
#include "config.h"
#include "test.h"
#include "cmpp.h"
#include "GB2UNICODE.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
int login_stat;int activeneed=0;
int intClientError;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
  int iRet;
  StandardToolBar->Buttons[1]->Down = true;
  iRet = CMPPInt("127.0.0.1",7890);
  if (iRet ==0)
  {
     Form1->StatusBar1->Panels->Items[0]->Text = "int ok";
  }else{
     MessageBox(Form1->Handle,"Socket建立连接失败,错误号 "+iRet,"Error",MB_OK+MB_ICONERROR);
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientRead(TObject *Sender,
      TCustomWinSocket *Socket)
{
  Recv_Buf *recv_buf;unsigned int recv_CommID;int UDLen;
  UDLen= Socket->ReceiveLength();       //接收收到的数据长度
  recv_buf=new(Recv_Buf);memset(recv_buf,0,UDLen);
  Socket->ReceiveBuf(recv_buf,UDLen);   //数据接收
  activeneed = 0;
  recv_CommID = ntohl(recv_buf->Command_Id);
  if (recv_CommID == CMPP_ACTIVE_TEST_RESP)  //收到ACTIVE_TEST_Resp 消息
  {
     CMPP_ACTIVE_TEST_RESP_tag *recv_active_resp;
     recv_active_resp=new(CMPP_ACTIVE_TEST_RESP_tag);
     memset(recv_active_resp,0,sizeof(CMPP_ACTIVE_TEST_RESP_tag));
     memcpy(recv_active_resp,recv_buf,UDLen);
     if (recv_active_resp->Reserved==0x00)
     {
        Memo1->Lines->Add(DateTimeToStr(Now())+"  Receive Message: Active_Test_Resp Success!");
        login_stat = 0;
     }else{
        Memo1->Lines->Add(DateTimeToStr(Now())+"  Receive Message: Active_Test_Resp Fail "+IntToStr(recv_active_resp->Reserved));
        login_stat = 1;
     }
     Memo1->Lines->Add("----------------------------------------------------------------------------------------------------------------------------");
     delete [] recv_active_resp;
  }
  if (recv_CommID == CMPP_SUBMIT_RESP)  //收到Submit_Resp 消息
  {
     CMPP_SUBMIT_RESP_tag *recv_Submit_resp;
     recv_Submit_resp=new(CMPP_SUBMIT_RESP_tag);
     memset(recv_Submit_resp,0,UDLen);
     memcpy(recv_Submit_resp,recv_buf,UDLen);
     if (recv_Submit_resp->Result == 0x00)
     {
        Memo1->Lines->Add(DateTimeToStr(Now())+"  Receive Message: Submit Success!");
     }else{
        Memo1->Lines->Add(DateTimeToStr(Now())+"  Receive Message: Submit Fail "+IntToStr(recv_Submit_resp->Result));
     }
     Memo1->Lines->Add("----------------------------------------------------------------------------------------------------------------------------");
     delete [] recv_Submit_resp;
  }
  if (recv_CommID == CMPP_DELIVER)    //收到 MO 消息
  {
     CMPP_DELIVER_tag *Deliver;unsigned __int64 DelivMsg_id;
     AnsiString phone;AnsiString beijiao;AnsiString zhulei;AnsiString UData;
     Deliver=new(CMPP_DELIVER_tag);memset(Deliver,0,sizeof(CMPP_DELIVER_tag));
     memcpy(Deliver,recv_buf,UDLen);
     byte ISReport;ISReport = Deliver->Registered_Delivery;
     if (ISReport == 0)
     {
        CMPPDeliverGet(Deliver,UData,DelivMsg_id,beijiao,phone,ISReport);
        Form1->Caption = "MO";
        Memo1->Lines->Add(DateTimeToStr(Now())+"  Receive Message: MO message");
        Memo1->Lines->Add("phone:"+phone+"  Dest_ID:"+beijiao+"  message:"+UData);
        Memo1->Lines->Add("----------------------------------------------------------------------------------------------------------------------------");
        CMPPDeliverResp(Deliver->Sequence_Id,Deliver->Msg_Id);
     }else{
        CMPP_Report_tag *buf_Report;__int64 Report_ID;
        buf_Report=new(CMPP_Report_tag);memset(buf_Report,0,sizeof(CMPP_Report_tag));
        memcpy(buf_Report,Deliver->Msg_Content,sizeof(CMPP_Report_tag));
        Report_ID = buf_Report->Msg_ID;
        Memo1->Lines->Add(DateTimeToStr(Now())+"  Receive Message: Report message");
        Memo1->Lines->Add("Msg_ID:"+IntToStr(Report_ID)+"  message:"+buf_Report->Stat);
        Memo1->Lines->Add("----------------------------------------------------------------------------------------------------------------------------");
        CMPPDeliverResp(Deliver->Sequence_Id,Deliver->Msg_Id);
        delete [] buf_Report;
     }
     delete [] Deliver;
  }
  if (recv_CommID == CMPP_CONNECT_RESP)  //收到 Connect_Resp 消息
  {
     CMPP_CONNECT_RESP_tag *recv_Connect_resp;
     recv_Connect_resp=new(CMPP_CONNECT_RESP_tag);
     memset(recv_Connect_resp,0,UDLen);
     memcpy(recv_Connect_resp,recv_buf,UDLen);
     if (recv_Connect_resp->Status == 0)
     {
       Shape1->Brush->Color = clLime;
       Memo1->Lines->Add(DateTimeToStr(Now())+"  Receive Message: Login Success!");
     }else{
       Memo1->Lines->Add(DateTimeToStr(Now())+"  Receive Message: Login Fail "+IntToStr(recv_Connect_resp->Status));
     }
     Memo1->Lines->Add("----------------------------------------------------------------------------------------------------------------------------");
     free(recv_Connect_resp);
  }
  if (recv_CommID == CMPP_TERMINATE)        //网关断开连接
  {
     CMPPTerminateResp(recv_buf->Sequence_Id);
     login_stat = 1;
     Shape1->Brush->Color = clRed;
     Memo1->Lines->Add(DateTimeToStr(Now())+"  Receive Message: Terminate");
     Memo1->Lines->Add("----------------------------------------------------------------------------------------------------------------------------");
  }
delete [] recv_buf;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ClientError(TObject *Sender,
      TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
  intClientError = ErrorCode;
  Memo1->Lines->Add(DateTimeToStr(Now())+"  System info: Socket error "+IntToStr(ErrorCode));
  Memo1->Lines->Add("----------------------------------------------------------------------------------------------------------------------------");
  ErrorCode = 0;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ClientDisconnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
  login_stat = 1;
  Shape1->Brush->Color = clRed;
  Memo1->Lines->Add(DateTimeToStr(Now())+"  System info: Socket disconnect!");
  Memo1->Lines->Add("----------------------------------------------------------------------------------------------------------------------------");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  if (activeneed >=3)
     CMPPActiveTest();
  if (activeneed == 3)
  {
     activeneed=0;
  }else{
     activeneed=activeneed+1;
  }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N1Click(TObject *Sender)
{
  FrmConfig->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ToolButton1Click(TObject *Sender)
{
  StandardToolBar->Buttons[1]->Down = false;
  if (login_stat == 0)
     return;
  int iRet = CMPPConnect("10014","09500");
  if (iRet == 1)
  {
     MessageBox(NULL,"Socket not conneted","errinfo",MB_OK);
   }else{
     Timer1->Enabled = true;
   }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ToolButton2Click(TObject *Sender)
{
  StandardToolBar->Buttons[0]->Down = false;
  CMPPTerminate();
  Timer1->Enabled = false;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ToolButton4Click(TObject *Sender)
{
  FrmConfig->ShowModal();
}
//---------------------------------------------------------------------------


void __fastcall TForm1::FormResize(TObject *Sender)
{
  Panel1->Width = Form1->Width-8;
  Panel2->Width = Panel1->Width/2-20;
  Panel2->Height = 289;
  Panel2->Top = 8;
  Panel3->Top = Panel2->Top;
  Panel3->Height = Panel2->Height;
  Panel3->Width = Panel2->Width;
  Panel3->Left = Panel1->Width/2 + 10;
  Shape1->Left = Panel3->Width-Shape1->Width-5;
  Shape1->Top =5;
  Memo1->Width = Form1->Width - 8;
  Memo1->Height = Form1->Height - 385;
  Memo2->Width = Panel2->Width - 80;
  Memo3->Width = Memo2->Width;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
  Client->Close();
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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