|
아래와 같이 코딩했을때 수신받은 데이터 Byte수를 알 수 있는데요.
수신받은 데이터를 Memo1에 출력하려면 어떻게 하면 될까요?
void __fastcall TForm1::NMUDP1DataReceived(TComponent *Sender,
int NumberBytes, AnsiString FromIP, int Port)
{
FromIP = Edit2->Text;
Port = StrToIntDef(Edit3->Text,50006);
AnsiString C;
TMemoryStream *MyStream = new TMemoryStream();
NMUDP1->ReadStream(MyStream);
C.SetLength(NumberBytes);
MyStream->Read(&C[1], NumberBytes);
Memo1->Lines->Add(C+": received "+IntToStr(NumberBytes)+" bytes from "+FromIP+" on port "+IntToStr(Port));
금목암 님이 쓰신 글 :
: 김명섭 님이 쓰신 글 :
: : {
: : AnsiString C;
: : TMemoryStream *MyStream = new TMemoryStream();
: : NMUDP1->ReadStream(MyStream);
: : C.SetLength(NumberBytes);
: : MyStream->Read(&C[1], NumberBytes);
: : Memo1->Lines->Add(C+": received "+IntToStr(NumberBytes)+" bytes from "+FromIP+" on port "+IntToStr(Port));
: : }
: :
: :
: : 질문1.
: : ReadBuffer or ReadStream으로 어느것을 하면 좋을까요?
: :
: : 질문2.
: : 아래와 같은 데이터를 받을려고 합니다.
: :
: : char sendData[12];
: : sendData[0]=0x81;
: : sendData[1]=0x21;
: : sendData[2]=0x00;
: : sendData[3]=0x00;
: : sendData[4]=0x41;
: : sendData[5]=0x10;
: : sendData[6]=0x00;
: : sendData[7]=0x0C;
: : sendData[8]=0x30;
: : sendData[9]=0x31;
: : sendData[10]=0x33;
: : sendData[11]=0x38;
: :
: : MyStream->Write(sendData,9);
: : NMUDP1->SendStream(MyStream);
: :
: : 아래와 같이 출력됩니다.
: : 31 31 30 30 43 30 31 33 38
: [답변]
: idudpserver1udp(read....)
: {
: char *cabuffer;
: string stbuffer,stsum;
: if(AData->Size==0)return;
: cabuffer=(char *)malloc(AData->size+1);
: AData->Read(cabuffer,AData->size);
: cabuffer=[AData->Size]=0;
:
: 이런식으로 udp서버의 이벤트에서 받아보세요
:
:
:
:
: }
: :
: : 원하는 결과는 아래와 같습니다.
: : 81 21 00 00 41 10 00 0C 30 31 33 38
: :
: : 고수님들의 답변부탁드립니다 ^^/
|