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
[13443] [참고] 그냥 참고만 하세요!
홍지곤 [] 868 읽음    2001-12-07 13:04
헬프미 님이 쓰신 글 :
: 안녕하세요?
:
: 혼자힘으로 해 볼려고 많이 노력해 봤는데.. 안되는군요.
: 고수님들의 조언을 바랍니다.
: 제가 문제를 가지고 있는 파일을 첨부합니다.
:
: [상황]
: - 인디 컴포넌트를 사용하는 C/S프로그램
: - 인디 클라이언트 소켓으로 데이터를 읽을때는 쓰레드를 이용
: - 데이터의 흐름은 클라이언트->서버->클라이언트 (일종의 에코기능)
: - 클라이언트가 서버로 데이터를 전송할때는 for문을 써서 50개 이상의 데이터를 날림
: - 서버는 OnExcute이벤트가 떨어질때 클라이언트로 부터 도착한 메시지를 읽음 그리고 클라이언트로 재전송
: - 클라이언트는 쓰레드를 통해서 항상 소켓을 감시하다가 도착한 메시지를 읽음
:
: [문제점]
: - 클라이언트가 자신이 for문을 통해 전송한 메시지를 모두 에코받고 종료하면 => 아무문제 없슴
: - 클라이언트가 자신이 보낸 메시지를 모두 받지 못하고 종료하면 => 블루스크린 T_T
:
: [나름대로 힌트]
: - 쓰레드를 종료하기전에 클라이언트 소켓의 버퍼를 완전히 지운다음 ShowMessage("");를 호출하니 아무런 문제없었는데.. ShowMessage코드가 없으니까 에러가 뜨는군요. ShowMessage말고 ::Sleep을 해봤는데.. 여전히 에러..
:
: [나의목표]
: - 인디를 사용하여 1:N관계의 P2P엔진을 구현함
: - P2P 서버와 클라이언트는 수시로 접속을 끊었다가 접속하는 관계
:
: [현재나의상태]
: - 암울함
: - 미치고
: - 팔짝뛰겠슴
:
: 그럼 미리 감사드리며.. 현명한 답변이나.. 알기쉬운 예제를 부탁합니다.
:

//-----------------------------------------------------------------
안녕하세요! Magic.홍지곤 입니다.
저도 헬프님과 같이 비슷한 현상을 겪었습니다.
전 버퍼를 사용하진 않았서 잘은 모릅니다.
방식은 비슷할 거라고 생각합니다.

헬프님은 이런 고민을 해보지 않았나요, 만약 서버의 전원을 내렸거나,
네트웍선을 뽑았다면 아마도 블루스크린이 뜰거라고 생각이 듭니다.
전 아직 이부분을 해결 못했지만요,

하지만 클라이언트에서 강제로 종료이벤트를 발생시켰다면 이때 메시지를(패킷)
을 서버로 보내고 서버는 받은 데이터를
다시 클라이언트에게 보낸후 클라이언트에서 종료 된다면 위에
같은 블루스크린은 나지않을 것 같습니다.

전 이렇게 해서 해결 했습니다. 남아있는 Thread를 몽땅 지운 후
종료 시켰습니다.

제 생각에는 모든 메시지는 C->S->C 후에 처리할 내용을 해야 할 것 같습니다.
강제로 종료시켰을 때에도 포함 될 것 같네요!



소스는 보지 못했습니다.
저도 횡설수설에다 허접해서 그냥 참고만 하세요!
조금이라도 도움이 되었으면 쉽네요~~~
그럼~~전 이만..휘리릭~~~~~~~~~

+ -

관련 글 리스트
13434 [질문] 블록킹모드 소켓(인디)을 쓰레드로 읽을때...(indy) 헬프미 1134 2001/12/06
13469     Re:[질문] 블록킹모드 소켓(인디)을 쓰레드로 읽을때...(indy) 이경문 1300 2001/12/08
13443     [참고] 그냥 참고만 하세요! 홍지곤 868 2001/12/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.