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
[63008] Re:인디소켓에 질문입니다.
Lyn [tohnokanna] 1387 읽음    2010-11-12 10:12
ETX안들어 왔으면 그냥 들어올때까지 데이터 쌓아두면 되죠 =_=a

알론소 님이 쓰신 글 :
: 소켓 컴포넌트쓰지않구요 그냥
:
:     TIdTCPClient    *IdTCPClient;
: 이렇게 선언해서 인디클라이언트 소켓사용하고있는데요
: 문제는 send한다음에 receive할때 문젠대요
:
: 보통
:     try
:     {
:         iStackSize = IdTCPClient->ReadFromStack();
:         iStackBufSize = IdTCPClient->InputBuffer->Size;
:
:         if(iStackBufSize > 0)
:         {
:             IdTCPClient->ReadBuffer(cRecvBuf, iStackBufSize);
:             memcpy(Buf, cRecvBuf, iStackBufSize);
:         }  //end of if
:         else
:             return;
:
:     }  //end of try
:     catch ( Exception &e )
:     {
:         if(iStackBufSize == 0)
:         {
:             return;
:         }
:
:         Thread_Exit();
:         return;
:     }
:
:
:
: 이런식으로해서 받는부분 처리하고있는대요
: 원래는 보통 패킷주고받을때 데이터 사이즈를 모르니까
: 앞부분에 데이터사이즈를 넣어서 데이터사이즈만큼 받잖아요
: 근데 데이터사이즈를 안넣어주겠다고해서
: 그럼 어떻게 데이터사이즈만큼 받지하고 생각하고
: 검색하고 그러다가
:
: IdTCPClient->InputBuffer->Size
: 있다는걸알게되었어요
: 만약에 데이터사이즈를 아는 함수나 속성이 있다면
: 좋은데 아무리 찾아봐도 없고 인디소켓같은경우는 저렇게 InputBuffer를
: 사용해야한다고 그러더라구요
:
: 그래서 이걸어떻게 사용하지 이리저러
: 막 쓰다가 결국엔 저렇게 코드를 짜버렸는데
: 문제는
: 그냥 보통 100바이트 안넘는걸 주로받거든요
:
: 간혹 근데 8000바이트조금넘는 데이터를 받는경우가있어요
: 근데 어떨땐 8000이 한번에 들어오는경우가있던데
: 어떨땐 1400바이트 그리고 나머지 6600바이트
: 이런식으로 두번나눠서 들어오는경우가있는거에요
:
: 그래서 제가 어거지로
:
:         iStackSize = IdTCPClient->ReadFromStack();
:         iStackBufSize = IdTCPClient->InputBuffer->Size;
:
: 이부분을 밑에 또썼거든요
:
: 전 만약에 두번나눠서 들어온다면 소켓이알아서
: 다처리해줄줄알았는데
:
: 저위에 제가 짜논걸로하니깐
: 1400바이트만 들어오고 뭐 또 반응도안하고
: 계속 밑으로 쭉쭉 내려가는거에요
:
:
: 그래서 밑에 ETX까지들어왔는지 돌리는 루프가있는데
: 1400까지만들어오면 아직 데이터가 완벽하지않으니
: 없잖아요 뒤에 데이터에있지
:
: 그래서 데이터를 완전하게 받질못하는거에요
: 그냥 반토막난 데이터만받고 끝나구...
:
: 어떻게 해야하나요
: 제가 혹시 저기 코드를 잘못짰나요??
: 어떻게해야하죠...

+ -

관련 글 리스트
63007 인디소켓에 질문입니다. 알론소 1302 2010/11/12
63008     Re:인디소켓에 질문입니다. Lyn 1387 2010/11/12
63012         Re:Re:인디소켓에 질문입니다. 알론소 1017 2010/11/12
63013             Re:Re:Re:인디소켓에 질문입니다. Lyn 1268 2010/11/12
63014                 네감사합니다.. 알론소 947 2010/11/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.