C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[76075] Re:Re:Re:IdUDPClient1->ReceiveBuffer
아루스 [tinydew4] 1207 읽음    2021-03-04 10:58
무슨 에러가 발생했는지 명시가 안되있으면 C# 도 마찬가지로 답변할 수 없어요.
아래 코드는 최신 툴에서 잘 동작한 코드입니다.

"에러가 나네 내가 쓴 코드가 무슨 문제가 있지?" 로 접근하면 문제 해결은 항상 어렵습니다.
에러 메세지를 해석해서 내용을 보셔야합니다.

님이 쓰신 글 :
: 조언해주신대로 했는데 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";
: : :     }
: : : }

+ -

관련 글 리스트
76038 IdUDPClient1->ReceiveBuffer 초보남 1155 2021/02/10
76039     Re:IdUDPClient1->ReceiveBuffer 아루스 1503 2021/02/10
76044         Re:Re:IdUDPClient1->ReceiveBuffer 1128 2021/02/15
76075             Re:Re:Re:IdUDPClient1->ReceiveBuffer 아루스 1207 2021/03/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.