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
[40833] Re:[질문] Indy TCPServer 쓰레드에서요..
황경록 [mpbox] 2371 읽음    2005-07-01 01:08
ReadBuffer 를 사용하시면 BufSize 만큼 읽을 때까지 블럭상태가 됩니다.
상대가 주는 패킷사이즈를 미리 알지 못한다면 ReadBuffer 를 사용하는데 문제가 있을것으로 보이는 군요.
이럴 땐 GStack 을 사용해서 InputBuffer 의 크기를 미리 검사하고 검사하는 루틴에 인스턴스 종료에 대한 부분도 추가하고 Timeout 을 일정한 시간을 주는 것도 효율적이라 생각됩니다만...

★래미★ 님이 쓰신 글 :
: 아래 함수에서 ReadLn()으로 하면 읽히는데, ReadBuffer(Message, BUF_SIZE)로 하면
: 그 부분에서 멈추어 있습니다.
: 관련 Q&A를 찾아보려 했으나, 무식한 나머지 답이 비켜가는둣 하네요 ㅠㅠ
: 서버에서 여러개의 클라이언트를 상대하여 데이터를 listen 하고
: 또 다른 데이터를 주기도 할려구요(이부분은 타이머를 이용할려고 생각중입니다. 아직 미 구현..)
: 한데 클라이언트로부터 받을 데이터가 크기가 부정확한 binary(내부 프로토콜을 구성할 예정이구요)로 되어있어
: 이를 어떻게 받아들여야될지 모르겠네요 ㅠㅠ
: 서버랑 클라이언트 소스 첨부했습니다.
: 이 외에도 지적할 부분이 있으시면 많은 도움 주세요 __)/
:
:
:
: void __fastcall TForm1::TCPServerExecute(TIdPeerThread *AThread)
: {
: /*
:     if( AThread->Stopped || AThread->Terminated ) return;
:     TIdTCPServerConnection * con = AThread->Connection;
:     AnsiString Message;
:     try {
:         Application->ProcessMessages();
:         Message = con->ReadLn();
:         MessageHandler(Message.c_str(), AThread);
:     }
:     catch(...) {
: //        ListBox1->Items->Add("Error...");
:         con->Disconnect();
:     }
: */
:
:     if( AThread->Stopped || AThread->Terminated ) return;
:     TIdTCPServerConnection * con = AThread->Connection;
:     char Message[BUF_SIZE];
:     try
:     {
:         Application->ProcessMessages();
:         con->ReadBuffer(Message, BUF_SIZE);
: //        con->ClearWriteBuffer();
:         MessageHandler(Message, AThread);
:     }
:
:     catch(...)
:     {
: //        ListBox1->Items->Add("Error...");
:         con->Disconnect();
:     }
: }

+ -

관련 글 리스트
40826 [질문] Indy TCPServer 쓰레드에서요.. ★래미★ 1624 2005/06/30
40833     Re:[질문] Indy TCPServer 쓰레드에서요.. 황경록 2371 2005/07/01
40836         Re:Re:[질문] Indy TCPServer 쓰레드에서요.. ★래미★ 1152 2005/07/01
40837             Re:Re:Re:[질문] Indy TCPServer 쓰레드에서요.. 황경록 2593 2005/07/01
40841                 Re:Re:Re:Re:[질문] Indy TCPServer 쓰레드에서요.. ★래미★ 1825 2005/07/01
40844                     Re:Re:Re:Re:Re:[질문] Indy TCPServer 쓰레드에서요.. 황경록 1320 2005/07/01
40845                         Re:Re:Re:Re:Re:Re:[질문] Indy TCPServer 쓰레드에서요.. ★래미★ 2500 2005/07/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.