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

📄 main.cpp

📁 CMPP的SP方源码(BCB)供程序员参考
💻 CPP
📖 第 1 页 / 共 2 页
字号:

void __fastcall TForm1::ServerSocket1ClientRead(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);
  CMPP_SUBMIT_tag *submit_buf;
  submit_buf=new(CMPP_SUBMIT_tag);
  memset(submit_buf,0,UDLen);
  char b[200];
  memset(b,0,200);
  Socket->ReceiveBuf(b,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("----------------------------------------------------------------------------------------------------------------------------");
     free(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("----------------------------------------------------------------------------------------------------------------------------");
     free(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);
        free(Deliver);
     }else{
        CMPP_Report_tag *buf_Report;
        buf_Report=new(CMPP_Report_tag);memset(buf_Report,0,sizeof(CMPP_Report_tag));
        memcpy(buf_Report,Deliver->Msg_Content,sizeof(CMPP_Report_tag));
        Memo1->Lines->Add(DateTimeToStr(Now())+"  Receive Message: Report message");
        Memo1->Lines->Add("phone:"+phone+"  Dest_ID:"+beijiao+"  message:"+UData);
        Memo1->Lines->Add("----------------------------------------------------------------------------------------------------------------------------");
     }
  }
  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("----------------------------------------------------------------------------------------------------------------------------");
  }
free(recv_buf);         
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ToolButton6Click(TObject *Sender)
{
  Form1->Close();      
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Q1Click(TObject *Sender)
{
  Form1->Close();         
}
//---------------------------------------------------------------------------

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



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



void __fastcall TForm1::ClientConnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
  intClientError = 0;        
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i;USGC *a;USGC *b;
 a=new unsigned char[10];
 b=new unsigned char[10];
 memset(a,0,10);memset(b,0,10);
 i=cvt_Unicode2GB(a,b);
 Form1->Caption = *b;
}
/* ------------------------------------------------------------------------- */

USGI Word_Unicode2GBcode(USGI Unicode)
/*
   查表将一个 UNICODE 码转换为 GB 码并返回,若找不到则返回 0

   M.L.Y  2002.4
*/
{
  int  i, n = (sizeof(GB2312_Unicode))/(sizeof(GB2312_Unicode[0]));

  for(i = 0; i < n; i++)
    if(GB2312_Unicode[i][1] == Unicode) return GB2312_Unicode[i][0];
  return 0;
}

/* ------------------------------------------------------------------------- */
int  cvt_Unicode2GB(USGC *strfrom, USGC *strto)
/*
   将 UNICODE 码字符串转换为 GB 码字符串,返回转换的汉字数

   M.L.Y  2002.4
*/
{
  int  i, j, k, n, conv;
  USGI w;
  USGL code_val;
  int  stat = 0; /* 0: ASCII, 1: #XX, 2: hanzi */

  for(i = 0, j = 0, n = 0; ; )
  {
    conv = NO;
    if(strfrom[i] == '#' && strfrom[i+1] >= '0' && strfrom[i+1] <= '9')
    {
      code_val = 0L;
      for(k = 1; ; k++)
      {
        if(strfrom[i+k] >= '0' && strfrom[i+k] <= '9')
          code_val = code_val * 10 + strfrom[i+k] - '0';
        else break;
      }
      if(k <= 6 && code_val <= 0xFFFF && code_val >= 128)
      {
        w = Word_Unicode2GBcode(code_val);
        if(w > 0)
        {
          conv = YES;
          if(stat != 2) strto[j++] = '\'';
          stat = 2;
          strto[j++] = (w & 0xFF00) >> 8;
          strto[j++] = w & 0x00FF;
          n++;
          i = i + k;
        }
      }
    }
    if(conv != YES)
    {
      if(stat == 2)
      {
        stat = 0;
        strto[j++] = '\'';
      }
      strto[j++] = strfrom[i];
      if(strfrom[i] == NUL) break;
      i++;
    }
  }
  for(i = 0, j = 0, k = 0; ; )
  {
    if(strto[i] == '\'' && strto[i+1] == '\'')
      i++;          /* 去掉连续的两个单引号 */
    else strto[j++] = strto[i];
    if(strto[i] == NUL) break;
    i++;
  }
  return n;
}

⌨️ 快捷键说明

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