Q&A

  • tidtcpserver/client를 이용한 멀티스레딩
안녕하세요. 문의좀 드리겠습니다.

제가 하려는 것은 6e버전에서 TidTCPServer/Client 컴포넌트를 통해

특정 sql의 쿼리 dataset을 주고받는 c/s를 구현하려고 합니다.

서버쪽에 database 컴포넌트가 있구요.

idtcpserver.onexecute에는 client의 요청이 있을 경우

쿼리문을 실행하여 그 자료를 클라이언트에 넘겨주게 되어있습니다.

클라이언트가 한놈만 들어왔을땐 제대로 되는데

한놈이 처리중일때 다른놈이 들어와서 요청을 하면 첫번째 놈의 작업이 멈춰버리네요.

database컴포넌트에는 session컴포넌트를 붙여놨구요.

idtcpserver.onexecute에서는 tthread 클래스를 계승받아 쿼리문을 실행, 데이터셋을

클라이언트에 리턴해주는 유도된 클래스로 클라이언트의 요청이 있을 때마다

쓰레드 객체를 동적 생성하여 실행하고 빠지게 처리를 했는데도 아직 무엇인가 버그가 있는지

제대로 작동을 안하네요. 참고할만한 소스나 도움을 좀 주시면 감사하겠습니다.

스레드 코딩을 오래간만에 잘 해보려니 멀티스레딩이 잘 안되는군요.

-locke
2  COMMENTS
  • Profile
    김일득 2004.11.16 00:43



    Thread에서 TQuery 등의 VCL콤포넌트를 사용하기위해서는
    TDataBase코포넌트와 VCL 콤포넌트를 1:1로 구성해서 각각의 TCririticalSection으로 묶어서 사용해보세요
  • Profile
    정동욱 2004.10.21 19:12


    [...]


    http://www.overbyte.be  에 가면 francois piette 라는 사람이
    만든 MidWare 라는게 있어요. 아마 본적이 있을지도...
    소스가 공개 되어 있으니 도움이 될겁니다.
    델파이의 MIDAS 보다는 좀 못하지만 그래도 독자적인 방법으로
    멀티 티어를 구현 합니다.
    님이 원하는 내용은 모두 들어 있어요.
    델파이의 MIDAS는 단점이 dll 한개를 꼭 달고 다녀야 하는게...
    그럼...
    • 김진태
    • 2004.10.22 08:44
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김진태
      2004.10.23 02:43
    • 이영주
      2004.10.22 22:04
      재미 있을것 같아 만들어 보았습니다. 좀 거친듯한 느낌은 드는군요. 메모장의 메뉴를 참고하였습니다. ...
    • 권오현
      2004.12.23 01:55
      안녕하세요. 저도 님과 같은 궁금증 있어 아래와 같이 해보니 그런대로 원하는 동작이 되더라구요. ...
    • 김민우
    • 2004.10.22 06:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 권태훈
      2004.10.22 22:54
      var   a1,a2 : String;   answer : Integer;   r1 : String; begin ...
    • Maru
      2004.10.22 06:32
      저는 이거 하루종일 고민하여.(글올리고 답글달기까지 고민함 -_-), 누군가 레지스트리를 건드려서 가...
    • 박준영
      2004.10.23 20:52
      혼자서 별짓 다해보다가 눈가리고 아웅인지는 모르지만 해결을 했습니다. 제가 Text 필드를 UpDate 쿼리...
    • 일그니
      2004.10.21 20:27
      Copy, POS, Length 이 세개의 함수를 이용하시면 무난 하실것 같습니다.
    • 최수림
    • 2004.10.21 19:35
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 정동욱
      2004.10.21 21:05
      [...] 1.어느쪽이 클라이언트 역할을 하느냐?. 2.최소한 초단위 보다 더빨리 모니터링 해야 한다,...
    • 송득보
    • 2004.10.21 18:43
    • 2 COMMENTS
    • /
    • 1 LIKES
    • 김일득
      2004.11.16 00:43
      Thread에서 TQuery 등의 VCL콤포넌트를 사용하기위해서는 TDataBase코포넌트와 VCL 콤포넌트를 1:1...
    • 정동욱
      2004.10.21 19:12
      [...] http://www.overbyte.be  에 가면 francois piette 라는 사람이 만든 MidWare ...
    • 강신구
    • 2004.10.21 18:20
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2004.10.21 18:44
      값을 확인 할 수 가 없어서 잘은 모르겠지만 아래와 같이 하면 됩니다. ==============================...
    • 강신구
      2004.10.21 19:43
      답변에 감사드립니다.. 답변주신 내용에서 한가지 빠진 부분이 있어서 추가 질문을 드립니다.. C함수...
    • 석주현
      2004.10.21 20:34
      흐흐 그걸 빼 놓았네요.. 아래에 추가 했습니다... 간단하게 포인터 증가는 inc(포인터명) 이걸 씁니다...
    • 강신구
      2004.10.21 21:48
      감사합니다.. 해결되었습니다.. 많은 도움이 되었습니다..
    • 하얀까마귀
      2004.10.21 18:26
      전체 필드나 전체 레코드가 바뀐건 님께서 루틴을 잘못만드신걸로 보이네요.. 밑에 있는 루틴은 참고 하...
    • 석주현
      2004.10.21 18:12
      다른 분이 해주신거에서 조금만 고치면 되는건데 -_-;; 아래 고친 거 입니다. 잘만 확인 하시면 바로 활...
    • 박원용
      2004.10.21 20:43
      아~~ 이제 정말 잘되네요... 갑자기 프로그램을 만들다보니.. 모르는것이 너무 많아서. 헤헤.. 답변...
    • 깜찌기
    • 2004.10.21 09:46
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2004.10.21 18:19
      Direct Input 을 이용하시면 간단하게 해결됩니다. 음 예전에 올라와 있던 DelphiX 같은 VCL 팩키지를 ...
    • 기타맨
    • 2004.10.21 02:00
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2004.10.21 18:37
      다른 문제겠죠? 해당 폼 내의 다른 루틴상의 문제라고 생각되어 지네요. ㅠㅠ 채팅폼의 루틴을 하나하...
    • 황영신
    • 2004.10.21 01:05
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 우용우
    • 2004.10.21 00:34
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 정동욱
      2004.10.21 01:43
      [...] 한마디로 엄청난 벌레를 만들었네요. SendBuf(Sendjpg,sizeof(Sendjpg)); 이 문장은 말...
    • 우용우
      2004.10.21 02:49
      답변 감사드립니다. 아직 기량이 부족해서 Sizeof 에 에러가있을줄 꿈에도몰랐습니다..ㅜ.ㅜ 헌데 님이 ...
    • 이근석
    • 2004.10.20 23:40
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2004.10.22 04:07
      안녕하세요 하얀까마귀 입니다.. 요즘 디비라고는 안해서 통~~~~ ㅎㅎ 손놓은지 수년이네요. 3-4년 되는...
    • 석주현
      2004.10.21 18:22
      전 델파이에선 그런 경우가 없었는데 씨 빌더에서 하다 보니 저번에 ParamBy 를 이용해서 파라메터 ...
    • 최성준
      2004.10.21 00:07
      1. 변수에 담아서 해보세요 예) temp := '''A'',''B''';
    • 이근석
      2004.10.21 00:18
      변수에 대입 방법을 써 보았지만 안돼는군요. (ㅜ.ㅜ)
    • 정동욱
      2004.10.21 02:08
      [...]   FormatDateTime( 'hh:nn:ss' ,  IncMinute( Now , 1 ) );  &n...
    • 석주현
      2004.10.21 01:08
      procedure TForm1.Button1Click(Sender: TObject); var   StartTime, EndTime, AddTime : TDat...
    • 석주현
      2004.10.21 00:39
      StartTime, AddTime,EndTime : TDateTime 로 선언 하시고 EncodeTime 으로 각각 인코드 해서 넣어 ...
    • 김정현
    • 2004.10.20 22:48
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2004.10.21 01:29
      안녕하세요. 최용일입니다. 소스가 없으면 불가능합니다. 델파이는 이진호환이 안됩니다. dcu, b...
    • 김정현
      2004.10.21 01:47
      에고...그럼 혼자 쇼를 했네요 ^^ 답변 정말 감사합니다. 다시 공부하고 오겠습니다. 최용일님 하루...
    • 최용일
      2004.10.20 21:48
      안녕하세요. 최용일입니다. OnKeyDown에서 하세요... if Key = VK_RETURN then    &...
    • 고진중
      2004.10.20 23:08
      답변 감사합니다.. 그런데 답변하신 내용은 질문전에 해봤던건데 안되요 ㅜㅜ
    • 최용일
      2004.10.21 01:21
      안녕하세요. 최용일입니다. 어떤것을 원하는지 잘 모르겠네요... 아래 코드는 일반적인 컨트롤이나 ...