📄 main.cpp
字号:
//---------------------------------------------------------------------------
#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 + -