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