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
[6218] Re:RecieveBuf는요...
조재영 [] 2123 읽음    2001-03-20 15:07
블로킹모드인거 같군요.

ReceiveBuf 는(그리고 다른 블로킹 계열 함수는) 수행시키면 데이터가 수신될때까지
멈춰버립니다.

그래서 쓰레드에 넣는거죠.
그렇지 않어면 어플리케이션이 멈춰버리니까요.
그리고 대기 상태로 빠지기 때문에 어플의 수행속도를 별로 저하시키지 않습니다.
멈춰있다가 데이터가 오면 돌아가기 시작하니깐..

ReceiveBuf에서 빠져나오는건 두가지경운데
하나는 접속이 끊어졌을 경우 예외가 발생하면서이고 하나는 데이터가 수신될때 입니다.

예외가 발생한것은 접속이 끊어진 경우이니 해당 소켓이 Active상태라 할지라도
Deactive시켜주고 처리를 하시면 됩니다.
그리고 쓰레드를 종료시켜야 겠죠.


권선미 님이 쓰신 글 :
: 제가 쓰레드를 돌려서 전역변수로 선언되어 있는 버퍼에..
: 데이타를 받을려고 하는데여..
:
: 궁금한 것은 RecieveBuf를 하면 버퍼에 무언가가 들어올때까지 마냥 기다리고
: 있는건지...
: 아님 한번 RecieveBuf를 시도하고 Recieve된 데이타의 길이를 돌려주는 건지
: 궁금합니다.
: 지금 상태로는 RecieveBuf하는 곳에서 스레드가 죽거든요...
:
: 이렇게 만든 이유는 원래.. blocking 소켓인데.. 소켓의 상태를 감시하기 위해서..
: (RecieveBuf를 하고 있으면 서버 소켓이 죽으면 즉시 알려지더라구요,.-1이 리턴되서..)
: main 소스에서는 SendRuf를 하고 전역 변수 버퍼에 무언가가 들어왔는지 계속 체크를 하면서
: 안들어 오면 sleep을 하고 또 체크하고...있다가 무언가가 들어오면 다음 코드로 가도록 했구요,,
:
: 쓰레드를 돌려서 쓰레드가 끝날때까지.. 계속 RecieveBuf를 시도하게 코딩을 했거든요..
: 근데.. sendbu, RecieveBuf에서 프로그램이 뻗어요..
:
: 무엇이 문제일까여?
: 갈켜 주세요....TT

+ -

관련 글 리스트
6202 RecieveBuf는요... 권선미 2071 2001/03/20
6218     Re:RecieveBuf는요... 조재영 2123 2001/03/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.