수신 버퍼로 TBytes 를 사용하시면 됩니다.
TIdUDPClient::ReceiveBuffer의 첫 인자는 모두 TIdBytes& 이며, TBytes와 호환됩니다.
TBytes RcvBuf;
RcvBuf.Length = 1000;
MainForm->IdUDPClient1->ReceiveBuffer(RcvBuf);
초보남 님이 쓰신 글 :
: 빌더 10.2 사용중입니다.
: udp send 정상 동작하고 rcv 테스트중에 IdUDPClient1->ReceiveString은 스트링으로 정상 수신되나
: hex값으로 받기 위해 IdUDPClient1->ReceiveBuffer은 컴파일 에러가 납니다.
: IdUDPClient1->ReceiveBuffer로 수신할 방법이 있는지요?
:
:
:
: void __fastcall TMainForm::Button_UdpConnectClick(TObject *Sender)
: {
: unsigned char sendBuf[1000], RcvBuf[1000];
: int i, Len, Port;
: void *Data;
: unsigned char Ip[4];
: String stReceive;
:
: if(MainForm->Button_UdpConnect->Caption=="UDP Disconnect"){
: MainForm->IdUDPServer1->Active=false;
: MainForm->IdUDPClient1->Active=false;
: MainForm->Button_UdpConnect->Caption="UDP Connect";
: stReceive=MainForm->IdUDPClient1->ReceiveString(100);
: }
: else{
: //MainForm->IdUDPClient1->ReceiveBuffer()
: MainForm->IdUDPClient1->Host = "192.168.0.20";
: MainForm->IdUDPClient1->Port = 3000;
: MainForm->IdUDPClient1->ReceiveTimeout = 5000;
: MainForm->IdUDPServer1->Active=true;
: MainForm->IdUDPClient1->Active=true;
:
: Len=100;
: for(i=0; i<Len; i++){
: sendBuf[i]=i;
: }
: Ip[0]=StrToInt(MainForm->Edit_Ip1->Text);
: Ip[1]=StrToInt(MainForm->Edit_Ip2->Text);
: Ip[2]=StrToInt(MainForm->Edit_Ip3->Text);
: Ip[3]=StrToInt(MainForm->Edit_Ip4->Text);
:
: Port=StrToInt(MainForm->Edit_Port->Text);
: sprintf(sTemp,"%d.%d.%d.%d",Ip[0],Ip[1],Ip[2],Ip[3]);
: //MainForm->IdUDPClient1->SendBuffer("192.168.0.20", 3000, RawToBytes(sendBuf, Len));
: MainForm->IdUDPClient1->SendBuffer(sTemp, Port, RawToBytes(sendBuf, Len));
: //MainForm->IdUDPClient1->Send("test");
:
:
:
: //stReceive=MainForm->IdUDPClient1->ReceiveString(100); //=>ok
: MainForm->IdUDPClient1->ReceiveBuffer(RcvBuf, sizeof(RcvBuf)); //=>nok
: MainForm->Button_UdpConnect->Caption="UDP Disconnect";
: }
: }
|