13,825
社区成员
发帖
与我相关
我的任务
分享
Byte* Send_CODE::Send_0000H()
{
short int XOR_L, XOR_H;
Byte sendArry[28];
sendArry[0] = 0xeb;
sendArry[1] = 0x90;
sendArry[2] = 0xeb;
sendArry[3] = 0x90;
for (int i = 4; i < 20; ++i)
{
sendArry[i] = 0xff;
}
sendArry[20] = 0x00;
sendArry[21] = 0x00;
sendArry[22] = 0x00;
sendArry[23] = 0x00;
XOR_L = MainForm->IntXOR16(sendArry,24, 4, 23) >> 16;
XOR_H = MainForm->IntXOR16(sendArry,24, 4, 23) >> 8;
sendArry[24] = XOR_L;
sendArry[25] = XOR_H;
sendArry[26] = 0x03;
sendArry[27] = 0x03;
return sendArry;
}
int IntXOR16(TBytes pCRCBuffer, int nlen,
int BeginOffsetOfCRCBuffer , int EndOffsetOfCRCBuffer)
{
int XOR;
Byte XOR_L, XOR_H;
Byte Buffer[1024];
XOR_L = 0x00;
XOR_H = 0x00;
if (BeginOffsetOfCRCBuffer< 0 || EndOffsetOfCRCBuffer < BeginOffsetOfCRCBuffer)
{
return -1;
}
int i = 0;
for (i = 0; i < nlen; i++)
{
Buffer[i] = pCRCBuffer[i++];
}
for (i = BeginOffsetOfCRCBuffer; i < EndOffsetOfCRCBuffer; i = i + 2)
{
XOR_L = XOR_L ^ Buffer[i];
}
for (i = BeginOffsetOfCRCBuffer + 1; i < EndOffsetOfCRCBuffer; i = i + 2)
{
XOR_H = XOR_H ^ Buffer[i];
}
XOR = XOR_L | XOR_H << 8;
return XOR;
}
int TMainForm::IntXOR16(Byte* pCRCBuffer, int nlen,
int BeginOffsetOfCRCBuffer , int EndOffsetOfCRCBuffer)
{
Byte* ptr = pCRCBuffer;
int XOR;
Byte XOR_L, XOR_H;
Byte Buffer[1024];
XOR_L = 0x00;
XOR_H = 0x00;
if (BeginOffsetOfCRCBuffer< 0 || EndOffsetOfCRCBuffer < BeginOffsetOfCRCBuffer)
{
return -1;
}
int i = 0;
for (i = 0; i < nlen; i++)
{
Buffer[i] = *ptr++;
}
for (i = BeginOffsetOfCRCBuffer; i < EndOffsetOfCRCBuffer; i = i + 2)
{
XOR_L = XOR_L ^ Buffer[i];
}
for (i = BeginOffsetOfCRCBuffer + 1; i < EndOffsetOfCRCBuffer; i = i + 2)
{
XOR_H = XOR_H ^ Buffer[i];
}
XOR = XOR_L | XOR_H << 8;
return XOR;
}
void Send_CODE::Send_0000H(Byte sendArry[])
{
short int XOR_L, XOR_H;
sendArry[0] = 0xeb;
sendArry[1] = 0x90;
sendArry[2] = 0xeb;
sendArry[3] = 0x90;
for (int i = 4; i < 20; ++i)
{
sendArry[i] = 0xff;
}
sendArry[20] = 0x00;
sendArry[21] = 0x00;
sendArry[22] = 0x00;
sendArry[23] = 0x00;
XOR_L = MainForm->IntXOR16(sendArry,24, 4, 23) >> 16;
XOR_H = MainForm->IntXOR16(sendArry,24, 4, 23) >> 8;
sendArry[24] = XOR_L;
sendArry[25] = XOR_H;
sendArry[26] = 0x03;
sendArry[27] = 0x03;
}
void __fastcall TMainForm::Button4Click(TObject *Sender)
{
String strfilePath;
char recvBuffer[66];
strfilePath = "c:\\uptime.dat";
ifstream infile(strfilePath.c_str(), ios::binary);
if (!infile)
{
}
else
{
infile.read(recvBuffer, 66);
}
// String str = "我是一个小菜菜";
// this->IdUDPClient->Send(str, TEncoding::Unicode);
TBytes arr;
arr.set_length(28);
Send_CODE *psend_code = new Send_CODE();
Byte sendArry[28];
psend_code->Send_0000H(sendArry);
memcpy(&arr[0], sendArry, 28);
this->IdUDPClient->SendBuffer("192.168.2.255", 12345, arr);
delete psend_code;
}
#include <idglobal.hpp>
// 发送方:将String转成TBytes
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String str = "我了个艹的abc";
IdUDPClient1->Send(str, TEncoding::Unicode);
}
// 接收方:将TBytes转成String
void __fastcall TForm1::IdUDPServer1UDPRead(TIdUDPListenerThread *AThread,
TBytes AData, TIdSocketHandle *ABinding)
{
String str = BytesToString(AData, TEncoding::Unicode);
ShowMessage(str);
}
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
IdUDPServer1->DefaultPort = 10000;
IdUDPServer1->Active = true;
IdUDPClient1->Host = "127.0.0.1";
IdUDPClient1->Port = 10000;
}
//---------------------------------------------------------------------------
void Send_0000H(Byte sendArry[])
{
short int XOR_L, XOR_H;
sendArry[0] = 0xeb;
sendArry[1] = 0x90;
sendArry[2] = 0xeb;
sendArry[3] = 0x90;
for (int i = 4; i < 20; ++i)
{
sendArry[i] = 0xff;
}
sendArry[20] = 0x00;
sendArry[21] = 0x00;
sendArry[22] = 0x00;
sendArry[23] = 0x00;
// XOR_L = MainForm->IntXOR16(sendArry,24, 4, 23) >> 16;
// XOR_H = MainForm->IntXOR16(sendArry,24, 4, 23) >> 8;
//
// sendArry[24] = XOR_L;
// sendArry[25] = XOR_H;
sendArry[26] = 0x03;
sendArry[27] = 0x03;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Byte sendArry[28];
Send_0000H(sendArry);
TByteDynArray bda;
bda.set_length(28);
memcpy(&bda[0], sendArry, 28);
IdUDPClient1->SendBuffer(bda);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::IdUDPServer1UDPRead(TIdUDPListenerThread *AThread, TBytes AData, TIdSocketHandle *ABinding)
{
ShowMessage(AData.Length);
}
IdUDPClient1->SendBuffer
void __fastcall TForm1::FormShow(TObject *Sender)
{
IdUDPServer1->DefaultPort = 10006;
IdUDPServer1->Active = true ;
}
void __fastcall TForm1::IdUDPServer1UDPRead(TIdUDPListenerThread *AThread, TBytes AData,
TIdSocketHandle *ABinding)
{
//TBytes为字节数组类型...
AnsiString ls_str="" ;
int li_len = AData.Length ;
for(int i =0 ;i<li_len ;i++)
ls_str = ls_str + (char)AData[i] ;
Memo1->Lines->Add(ls_str);
}
void __fastcall TForm1::Button3Click(TObject *Sender)
{
TBytes bt;
bt.set_length(2);//设定数组长度
bt[0]='A';
bt[1]='B';
IdUDPClient1->SendBuffer("127.0.0.1",10006,bt);
}