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
[5346] Re:질문......네트웍에서 -> sizeof() 연산을 잘못하셨습니다
박지훈.임프 [cbuilder] 2810 읽음    2001-02-10 13:50
지니 님이 쓰신 글 :
:
: 책에나온예제인데요...
: 4바이트밖에 프린트가 안돼네요...
:
: 왜그런지..
:
:
:
:
:
:
: void __fastcall TMainF::Edit2KeyPress(TObject *Sender, char &Key)
: {
:   char SendData[1024];
:
:   if(Key == 0x0d){
:     NMUDP1->RemoteHost = Edit1->Text;
:     NMUDP1->RemotePort = NMUDP1->LocalPort;
:     memset(SendData,0x00,1024);
:     memcpy(SendData,Edit2->Text.c_str(),strlen(Edit2->Text.c_str()));
:     NMUDP1->SendBuffer(SendData,sizeof(SendData[1024]),strlen(Edit2->Text.c_str()));
:     Edit2->SelectAll(); //다음에 써질때 모두지우고 쓰게됨
:   }
: }
: //---------------------------------------------------------------------------
: void __fastcall TMainF::NMUDP1DataReceived(TComponent *Sender,
:       int NumberBytes, AnsiString FromIP)
: {
:   char Buff[1024];
:   int i;
:   memset(Buff,0x00,sizeof(Buff));
:   NMUDP1->ReadBuffer(Buff,NumberBytes,i);
:   Memo1->Lines->Add(Buff);
:
: }
: //---------------------------------------------------------------------------
:
:


임펠리테리입니다.

다음 라인을 보시죠.
NMUDP1->SendBuffer(SendData, sizeof(SendData[1024]), strlen(Edit2->Text.c_str()));
두번째 인자인 버퍼사이즈에 sizeof(SendData[1024])를 넘겨주셨으니 실제로 넘어가는 값은 1이죠. 그런데도 4바이트가 전송되었다니 오히려 NMUDP 컴퍼넌트가 더 수상하네요.
위 라인을 다음과 같이 바꾸시면 될 겁니다.
NMUDP1->SendBuffer(SendData, sizeof(SendData), strlen(Edit2->Text.c_str()));

그럼 참고하시길...

+ -

관련 글 리스트
5342 질문......네트웍에서 지니 2578 2001/02/10
5346     Re:질문......네트웍에서 -> sizeof() 연산을 잘못하셨습니다 박지훈.임프 2810 2001/02/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.