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
[76044] Re:Re:IdUDPClient1->ReceiveBuffer
[] 1129 읽음    2021-02-15 11:29
조언해주신대로 했는데 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 초보남 1156 2021/02/10
76039     Re:IdUDPClient1->ReceiveBuffer 아루스 1505 2021/02/10
76044         Re:Re:IdUDPClient1->ReceiveBuffer 1129 2021/02/15
76075             Re:Re:Re:IdUDPClient1->ReceiveBuffer 아루스 1211 2021/03/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.