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
[47725] Re: 오류 원인 하나
[] 979 읽음    2007-01-11 13:16
이희성 님이 쓰신 글 :
: 보시면 오른쪽 2번재 메모장이 장치에서 들어오는 데이타를 일정시간간격으로 뿌려준겁니다. 근데..
: 데이타가 잘 나오다가 깨지는건....소켓 프로그램의 잘못이 아닌것 같은데..
: 이 데이타의변질의 원인을 짚어주실수 있는지요?
: 참 그림상에서는 안보이지만 일정하게 깨진다는 겁니다......제추측은 장치의 송신용 버퍼를 넘어서 다른 데이타를 읽어오는게 아닌가 싶은데 프로그램을 수정해도 답이 나오지 않네여?
: 참 그리고 이건 저번에도 물어본건데... 메모장으로 데이타 수신시..string 형태로 나와서 그런지..
: 제가 보낸데이타는 16진수인데...안나오네여..
: 제가 tcp 수신시 처리한부분은..
: void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
:       TCustomWinSocket *Socket)
: {
:  AnsiString r_temp;
:  int ReceiveSize = 0;
:  if(ServerSocket1->Socket->Connected)
:     {
:     ReceiveSize = Socket->ReceiveLength();
:     char *Buf = new char[ReceiveSize];
:     Socket->ReceiveBuf(Buf, ReceiveSize);
:     Memo2->Lines->Text =Memo2->Lines->Text+Buf;
:     }
:  }
:
: 스트링값으로 읽으면 안되구 hex값으로 읽어와 메모장에 뿌리는 방법좀 알려주세여...
: 그리고 tchart에서 위에서 받은 헥사값으로 뿌려주는 방법좀 알려주세여?
: tchart는 기본 3D가 아닌 기본 Line입니다.... add()를 쓰는건가요?
: 기본적인 소스라도 있나여?
:
: 참 그리고 첨부그림에 메모장 보면 memo1,2,3 이글씨 지우는 방법좀 알려주세여?

Buf에 받을 내용이 문자열이 확실할 때 ReceiveBuf로 받아서 완전한 문자열로 만들려면 끝에 '\0'을 추가해 주셔야 합니다.
char *Buf = new char[ReceiveSize];
Socket->ReceiveBuf(Buf, ReceiveSize);
위를
char *Buf = new char[ReceiveSize+1];
ReceiveSize  = Socket->ReceiveBuf(Buf, ReceiveSize);
Buf[ReceiveSize]='\0';로
수정하셔야 하고 Buf의 사용이 끝났으면 delete[] Buf; 해주셔야 합니다.

받을 내용이 문자열이 확실할 때는 위와 같이 하면 복잡하므로 그냥 ReceiveText로 받는 게 간단합니다.


TMemo 인스턴스에 디폴트로 들어가 있는 한 줄은 디자인 타임에는 오브젝트 인스펙터에서 Lines 속성을 선택하면 오른쪽에 ... 버튼이 나타나는데 이를 누르면 편집창이 뜹니다. 그 곳에서 지우시면 되고 런타임에는 Memo1->Lines->Clear();과 같이 하시면 됩니다.

+ -

관련 글 리스트
47718 tcp 서버소켓 데이타 수신시 이희성 1119 2007/01/11
47726     Re:tcp 서버소켓 데이타 수신시 1418 2007/01/11
47725     Re: 오류 원인 하나 979 2007/01/11
47732         감사합니다 그런데 이희성 843 2007/01/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.