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
[62756] 인디소켓질문입니다.
알론소 [smire4454] 1059 읽음    2010-10-23 18:06
인디소켓 클라이언트를 사용하는데
컴포넌트를 사용하지않거든요.

근데 보내는부분말고 받는부분에서 경고창이 떠서 문제인데요
그리고 메모리에러도 발생하더라구요
근데 그부분에 이런 경고창이 뜨는대요

Project xxxx raised exception class EldConnClosedGracefully with message 'Connection Closed Gracefully' Process stopped. Use Step or Run to continue.

이런경고창이뜨구요
제가 장비와 통신을하는데 장비가 서버역할이고 제가 클라이언트여서
제가 컨넥을요청합니다

근데 제가 명령을 보내면 그에따라서 수신을해야하잖아요

이게 하나장비와연결하면 잘됩니다
근데 문제는 여러장비와 연결하니까 저런경고창이뜨고
씨빌더같은경우 CPU창뜨면서 메모리오류같은
그런오류뜨면서 더이상 디버깅을할수가 없잖아요
그런 상태로 되버리더라구요


패킷안에 데이터길이를 안넣어주다보니까
데이터길이가 어떻게 들어오는지 알수없으니

인터넷에 뒤져서 인디소켓관련해서 들어오는 데이터길이를
알수있는 함수를 찾았습니다.
그래서 적용시킨게

    try
    {

        iStackSize = IdTCPClient->ReadFromStack();
        iStackBufSize = IdTCPClient->InputBuffer->Size;

       if(iStackBufSize > 0)
       {
           IdTCPClient->ReadBuffer(cRecvBuf, iStackSize);
           memcpy(Buf, cRecvBuf, iStackSize);
       }
    }

이렇게 사용했구요.

근데 제가 저 ReadFromStack() 함수나 그리고 InputBuffer이게
어떤용도이고 어떤기능을 하는지 어떻게 사용해야하는지
정확하게 모르고 그냥대충
사이즈를 반환해주구나 이런정도만 알아서그런지

이렇게되버린거같아요

몇십개아니면 백개정도 장비와 통신을 해야하는데
이런문제가 발생하는데 어떻게해야하나요??
제가 잘못 소스를 짜고있는지
잘모르겠어서요.ㅠㅠ 부탁드립니다.

+ -

관련 글 리스트
62756 인디소켓질문입니다. 알론소 1059 2010/10/23
62772     Re:인디소켓질문입니다. Sexyguy™*^^* 1097 2010/10/25
62790         Re:Re:인디소켓질문입니다. 알론소 1047 2010/10/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.