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
[50351] WSARecv()에 대해서
고구마 [darkman76] 2221 읽음    2007-08-22 21:31
제가 IOCP 개발을 하고 있는데요
문제가 있습니다

일단 오버랩을 맴버로 가지고 있는 클래스(buffer) 를 만들고
클라이언트 인포 클래스를 만들어서 맴버로 buffer * 를 가지고 있다가
클라이언트가 accept가 되면 buffer 클래스에 오버랩을 연결했습니다
문제는 보내기는 잘되는데 받는 쪽에서 한번받고 나서 두번째 부터는 받아지지 않는군요
분명 WorkerThread 내에서 while문 안에 GetQueuedCompletionStatus 함수로 대기하고 있는데요
보내기 받기 데이터는 잘 받아지는데 받는쪽에서 1번 이상 GetQueuedCompletionStatus 에서 캣취가 안되네요
그래서 해결하기 위해 WSARecv()를 다 받고나서
    UINT32 nRetVal = WSARecv(pClientInfo->m_Socket,
            pOverlapBuff->GetWSARecvBuffer(),
            1,
            &dwIoSize,
            &ulFlags,
            &pOverlapBuff->m_overLapp,
            NULL);
위와같이 한번 등록을 해봤습니다 그랬더니 받는 부분에서 1(0), 2(X), 3(0) 이렇게 됐다가 안됐다가 합니다
해서  WSARecv()를 다 받고나서  PostQueuedCompletionStatus 로 해서 등록을 해봤습니다
그랬더니 연속적으로 다 받아지네요 근데 문제는 제가 서버에서 데이터를 보내고 리스판스를 받는 부분에서
마찬가지로 한번만 받아지고 다음부터는 안받아지네요
혹 WSARecv()를 다 받고나서 무슨 다른 동작을 해야 하나요???
GetQueuedCompletionStatus  완료포트라고 하더만 완료가 되도 동작을 안하네요
고수님들 꼭 답변좀 부탁드립니다

+ -

관련 글 리스트
50351 WSARecv()에 대해서 고구마 2221 2007/08/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.