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
[71971] TUdpSocket 관련 UDP 포트가 열리지 않네요.
전자컴맹 [hjso777] 4017 읽음    2014-11-12 11:11
장비 자체가 UDP 통신만 지원해서 UDP 짜고 있는데요. 잘안되서 도움 요청합니다.
빌더 6.0으로 하고 있습니다.
아래는 UDP OPEN 하기 위해 저의한 내용입니다.

void __fastcall TForm1::UdpConnect()
{
    BYTE buffer[4096];
    UdpSocket1->RemoteHost = TCP_IP->UnitIP->Text;  //192.168.60.3
    UdpSocket1->RemotePort = StrToInt(TCP_IP->Sel_port->Text);  //9008
    UdpSocket1->LocalHost  = "192.168.60.1";
    UdpSocket1->LocalPort = StrToInt(TCP_IP->sever_port->Text);  //5634
    UdpSocket1->Open();
}

보내는것은 잘됩니다.
UdpSocket1->SendBuf(pData, nSize, 0);

받는 부분에서 UDP 5634 포트가 생성이 되야 되는데 생성이 안됩니다.
도스창에서 포트 확인하면 정상적인 포트생성은
UDP   0.0.0.0:5634  *.*
이게 생성이 되야되는데 생성을 하질 않네요. 그래서 UdpSocket1Receive 이벤트가 걸리지 않네요.
void __fastcall TForm1::UdpSocket1Receive(TObject *Sender, PChar Buf,
      int &DataLen)
{
    int    size = 0;
    unsigned char szBuf[1024];
    int    nRecvCount = 0;
    int     sucess = 0;
    FILE *fp;
    SYSTEMTIME  ttt;

    memset(szBuf, 0, sizeof(szBuf));
    size = UdpSocket1->ReceiveBuf(szBuf, DataLen, size);

    fn_MessageView(szBuf, 1, size, "RX");

    Memo1->Lines->Add((char *)szBuf);
     if( CheckBox1->Checked == true)
     {
        GetLocalTime(&ttt);
        sprintf(time_save,"%04d%02d%02d%02d.txt", ttt.wYear, ttt.wMonth, ttt.wDay, ttt.wHour);
        fp = fopen(time_save, "ab+");
        fprintf(fp, "%02d:%02d:%02d.%03d RX ", ttt.wHour, ttt.wMinute, ttt.wSecond, ttt.wMilliseconds);
        for(int i=0;i<size;i++)
            fprintf(fp, "%02X ", szBuf[i]);

        fprintf(fp, "\n");
        fclose(fp);
     }
}
구글링 및 참고 자료를 아무리 찾아봐도 저와 같은 사례가 많이 있었는데 해답은 없네요.

다른 방법으로 리시브 하는 부분만 TNMUDP로 구현을 해 봤습니다.
포트 생성하고 리시브 이벤트에 잘들어오는데
void __fastcall TForm1::NMUDP1DataReceived(TComponent *Sender,
      int NumberBytes, AnsiString FromIP, int Port)
{
    int    size = 0;
    char szBuf[1024];
    int    nRecvCount = 0;
    memset(szBuf, 0, sizeof(szBuf));
  NMUDP1->ReadBuffer(szBuf, 1024, nRecvCount);
}
ReadBuffer에서 아래와 같이 에러창이 뜹니다.
access violation at 0x00000000: read of address 0x00000000'. Process Stopped. Use Step or Run To continue
뭘 잘못 한것지 모르겠습니다.

혹시 아시는 고수님들 답변 부탁드립니다.


+ -

관련 글 리스트
71971 TUdpSocket 관련 UDP 포트가 열리지 않네요. 전자컴맹 4017 2014/11/12
71972     Re:TUdpSocket 관련 UDP 포트가 열리지 않네요. 송재형 4086 2014/11/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.