조언해주신대로 했는데 MainForm->IdUDPClient1->ReceiveBuffer(RcvBuf); 에서 에러발생하네요
혹시 stReceive=MainForm->IdUDPClient1->ReceiveString(100); 에서 얻은 스트링 데이터를 hex로 변환하는
방법이 있을까요??
c#과 다르게 빌더는 구굴링 자료를 찾아볼 수 가 없어요ㅠㅠ
막힐때마다 힘이 들어서 ㅠㅠ 이참에 갈아타야하는지도 고민중입니다.~
void __fastcall TMainForm::Button_UdpConnectClick(TObject *Sender)
{
unsigned char sendBuf[1000], receiveBuf[1000];
int i, Len, Port;
void *Data;
unsigned char Ip[4];
String stReceive;
TBytes RcvBuf;
RcvBuf.Length = 1000;
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); //=>???
MainForm->Button_UdpConnect->Caption="UDP Disconnect";
}
}
아루스 님이 쓰신 글 :
: 수신 버퍼로 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";
: : }
: : }
|