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
[68560] Re:Re: 스레드 문제 아닐까요?
장성호 [nasilso] 1424 읽음    2012-11-19 10:24
쓰레드 문제일 것입니다.

어딘가에서 얼핏 들으셨다는 "TClientSocket이 Thread 기반.." 이라는 것부터 의심해 봐야할것 입니다.

TClientSocket은 기본적으로 비동기(NonBlocking) 소켓입니다.

TClientSocket의 비동기 이벤트는  Window-Handle을 생성해서
메세지를 통해서 이벤트를 호출합니다.


만약 쓰레드에서 생성한다면
그 쓰레드에 메세지 Pump로직이 있어야   TClientSocket의 이벤트들이 제대로 호출될것입니다.

그럼~!

aa 님이 쓰신 글 :
: 스레드 문제 아니면 소스코드나 TClientSocket에 버그가 있는게 아닐까요?
:
:
: zzang9un 님이 쓰신 글 :
: : 요즘 버전에선 거의 안쓰지만...
: : 예전 소스에 자주 사용했던 TClientSocket을 사용하다보니
: : 이상한 현상을 발견해서 질문 드립니다.
: :
: : Client 소켓 2개를 사용해서 별도로
: : Communication이라는 클래스를 만들었습니다.
: : 여기에는 TClientSocket이 2개 들어있죠...
: :
: : 그런데....
: : MainForm에서 Communication 클래스를 직접 생성해서
: : 소켓의 Host, Port를 설정하고 Active를 true로 변경하면
: : Active 값도 변경이 잘 되고 Server 접속이 잘 되는데....
: :
: : MainForm에서 별도 생성한 Thread에서
: : Communication 클래스를 생성해서 똑같이 설정하고
: : Active를 true로 변경하면 Active 변경이 true안되고 접속도 안됩니다.
: :
: : Communication 클래스는 동일한 것을 사용했으니...
: : 차이라면... MainForm에서 생성한 경우와 Thread에서 생성한 경우인데...
: : 어떤 문제가 있는 건지 잘 모르겠습니다...
: :
: : TClientSocket이 Thread 기반으로 되어 있다고 얼핏 들은 것 같습니다...
: : 그렇더라도 다른 Thread에서 돌아가는 게 문제가 있나요??
: : 왜 MainForm에서는 잘되는데 Thread에서는 안될까요?
: : (Thread에서 Thread 생성하는 게 문제가 있는건지도 궁금하네요.. )

+ -

관련 글 리스트
68557 TClientSocket Active 관련 질문드립니다. zzang9un 1515 2012/11/18
68558     Re: 스레드 문제 아닐까요? aa 1270 2012/11/18
68560         Re:Re: 스레드 문제 아닐까요? 장성호 1424 2012/11/19
68562             Re:Re:Re: VCL 프레임웍 구조 때문 입니다... 빌더(TWx) 1674 2012/11/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.