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
[41456] IOCP 에서 ERROR_IO_PENDING 처리는 어떻게?
넘초보 [mspower] 2095 읽음    2005-08-14 00:19
IOCP 를 이용한 통신을 하고 있습니다.

제가 궁금한것은 서버에서 송신시에 ERROR_IO_PENDING 상태입니다.

아래처럼 데이터를 보낼때

ret = ::WriteFile((HANDLE)socketValue, packet, packetSize, &wBytes, (LPOVERLAPPED)&ol);

ERROR_IO_PENDING 상태라면, 보내고자 하는 packet 이 이미 소켓버퍼에 들어간건지,

아니면, ERROR_IO_PENDING 상태 해제후에 다시 packet 을 WriteFile 로 넣어주어야 하는것인지..

ERROR_IO_PENDING 시에 wBytes(전송된바이트) 를 보면 항상 0 으로 되어 있더군요.

wBytes 의 값이 소켓 버퍼에 넣어진 값인지, 아니면 클라이언트로 전송이 완료된 값인질 모르겠네요..

소켓버퍼에 넣이진 값이라면, ERROR_IO_PENDING 해제후에 나머지 값을 넣어주면 될거라고 보는데,

항상 이 값이 ERROR_IO_PENDING시에는 0 이라서요.....


GetOverlappedResult() 함수로  ERROR_IO_PENDING 해제를 기다렸다면, 위에서 보내고자 하는

packet 데이터가 전송된 것인지, 만약 그렇다면 GetOverlappedResult() 으로 ERROR_IO_PENDING 으로

헤제를 기다리지 않고 바로 다음 데이터를

ret = ::WriteFile((HANDLE)socketValue, packet2, packet2Size, &wBytes, (LPOVERLAPPED)&ol);

와 같이 계속 보낼경우에 발생할 수 있는 문제는 어떤게 있을까요?


ReadFile 의 경우 ERROR_IO_PENDING 시에, 그냥 기다려면 클라이언트로부터 데이터가 올테고,

이때 다시 읽어들이면 될텐데, 음...


도움 부탁드립니다.....

+ -

관련 글 리스트
41456 IOCP 에서 ERROR_IO_PENDING 처리는 어떻게? 넘초보 2095 2005/08/14
41465     Re:IOCP 에서 ERROR_IO_PENDING 처리는 어떻게? 유영인 Cuperido 3801 2005/08/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.