|
SocketThread = new TMyServerClientSOcket(false, ClientSocket, this);
위에서 TMyServerClientSOcket을 어떻게 정의했는지 소스를 좀 보여주세요.
저는 아무리 해도 컴파일 에러가 나서 환장하겠습니다.
꼭 부탁해요.....!
한꼬맹이 님이 쓰신 글 :
: 김나솔 님이 쓰신 글 :
: : 답변 감사드리구요 ^^
: : 또 질문드릴께요.
: : 답변해주신 님이 Indy Winshoes를 추천해주셨는데, 요 TServerClientThread를
: : 일단 사용해보구 나서, Indy 를 써봐야겠어요. 당장은 급해서..그리고
: : TClientSocket도 막 썼는데, Indy싸이트 가서 보니깐 C++builder에서 제공하는
: : 인터넷 콤포넌트하곤가? 암튼. 먼가 같이 사용할 수 없다고..
: :
: : 다시 질문드리는 건요,
: : 제가 어떻게 했냐면요.
: :
: : TServerSocket *ServerSocket;
: : //을 생성해놓구 ACtive시켰어요.
: :
: : //OnGetThread 이벤트 핸들러에서
: : void __fastcall TCommand::ServerSocketGetThread(System::TObject* Sender, TServerClientWinSocket* ClientSocket, TServerClientThread* &SocketThread)
: : {
: : SocketThread = new TMyServerClientSOcket(false, ClientSocket, this);
: : }
: : 쓰레드를 생성해주었구요.
: :
: : void __fastcall TMyServerClientThread::ClientExecute(void)
: : {
: : while..
: : try..
: : //요기서 TWinSocketStream을 선언해서 수행할 코드를 써주었거든요.
: : //클라이언트로부터 데이터를 일부분 받아들여서 원하는 파일을 업로드.
: : }
: :
: : 그런데, 제가 파악한 바로는 클라이언트가 접속해올 때마다 OnGetThread이벤트가 발생해서,
: : 그때 그때 새로운 쓰레드를 생성해서, 그 쓰레드가 클라이언트와의 작업을 ClientExecute함수
: : 내에 코드대로 수행을 하는 거 같거든요? 근데, 한번 클라이언트가 접속해오면 OnGetThread
: : 이벤트가 발생하고, 수행이 끝나면 쓰레드가 사라지고, 다시 클라이언트가 접속해오면
: : 새로운 쓰레드 생성 즉 OnGetThread이벤트가 발생해얄 거 같은데, 생성시켜주는 데로 가지
: : 않고, 바로 ClientExecute가 불리더라고요. 이궁..
: : 제가 잘못 이해하고 있으면 좀 지적해주시면 감사하겠습니다 ^^
: :
: : 그리고 또 질문은 이벤트 핸들러의 매개변수에서 TServerClientThread* &SocketThread
: : 에서 * & 요거 있잖아요. 참조자인가요? 참조자를 이해하는 거를 회피해서 --; 잘 모르는..
: : SocketThread를 생성해주면 이 주소를 TServerWinSocket가 관리하는 ActiveThread 리스트
: : 같은 거에 추가가 되는 건가요?
: :
: : p.s: 정리되지 않은 질문 죄송하고, 바로 답변해주셔서 감사합니다.
:
: 안녕하십니까?
:
: 한꼬맹이 입니다.
:
: 빌더의 서버소켓컴포넌트에는 ThreadCacheSize라는 프러프티가 있습니다. 이놈이 뭘하느냐 하면
:
: 캐쉬로 이용할 쓰레드개수를 지정하는 겁니다. 즉 클라이언트가 요청될때 마다 쓰레드를 만들고
:
: 연결이 끝날때마다 그 쓰레드를 해제하면 많은 오버헤드가 생기기 때문에 캐쉬크기만큼은
:
: 클라이언트 접속이 끊겨도 쓰레드를 해제하지 않고 다른 클라이언트 접속이 생기면 기존의 캐쉬된
:
: 쓰레드를 재활용하기 위한 것입니다. 그래서 항상 클라이언트 접속이 있다고 해서 새로운 쓰레드
:
: 가 생성되는 것은 아닙니다.
:
: TServerClientThread* &SocketThread 에서 TServerClientThread클래스 자체가 포인터인 참조변수라
:
: 고 이해하시면 되고요.. 여기서 할당된 값은 ActiveThreads 값을 하나 증가 시켜줍니다.
:
: 그럼 참고하세요....
:
|