|
지니 님이 쓰신 글 :
:
: 책에나온예제인데요...
: 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()));
그럼 참고하시길...
|