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
[8408] [질문]Async Socket에서의 READ EVENT와관련하여(TServerSocket 이용)
초보 [] 1322 읽음    2001-06-22 11:01
상황 설명

1.   TServerSocket을 이용하여  ServerType = stNonBlocking을 설정한 후

Listening을 시작한다.


2.   어느 모  클라이언트가 접속하고 connect가 이루어진다.


3.   모 클라이언트가 80바이트를 서버로 보낸다.

4.   TServerSocket의 ReadEvent가 발생한다.

5.   이벤트 발생시 먼저 10바이트가 읽는다.
     Socket->ReceiveBuf(Buffer,10);

6.   위의 이벤트 발생 루틴 내부에서 70바이트를 더 읽는다.
     Socket->ReceiveBuf(Buffer+10,70);

7.   관련된 처리를 한후 이벤트 발생 루틴을 벗어난다.

8.   새로운 Read Event가 발생한다. <------------------요 부분이 문제입니다.

읽은 데이타를 조사하면 0이 나온다.


위를 보시면 네트워크 Buffer에 80바이트가 한번에 전달되었으며 ReadEvent함수에서

10바이트를 읽은후 다시 70바이트를 읽을 경우 ReadEvent가 한번 더 발생하더군요.

한번더 발생한 ReadEvent에서 Socket->ReceiveLength()의 값을 구하면, 0이 나옵니다.

즉 위의 하나더 발생한 ReadEvent는 무얼 의미하는지요??


고수님의 답변 기다리겠습니다.

ps.제 추측에는 네트워크 버퍼를 체킹하는 window자체의 Thread가 있어서
70바이트가 남아있을때 Queue에 메세지를 한번더 뿌려주는거 같은데 맞나요?
초보라서 추측만 할 뿐입니다.그럼...


+ -

관련 글 리스트
8408 [질문]Async Socket에서의 READ EVENT와관련하여(TServerSocket 이용) 초보 1322 2001/06/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.