Q&A

  • INDY 를 사용한 none- blocking socket.
===INDY 를 사용한 none- blocking socket.

delphi 에 포함된 TClientSocket 을 사용하다가 Indy로 바꾸려고 합니다.

그런데 Indy에 포함된 TCP component 를 살펴보니 onReceive 등의 event 가없더군요. chating demo 소스를ㄹ 보아도 timer 로 0.5 초마다 socket 으로 읽는 방식을 취하더군요.
Indy 를 가지고 timer 없이 비동기 socket 을 운영하려면 어떻게해야하는지 아시는분 도움 바랍니다.

그럼 20000
2  COMMENTS
  • Profile
    KDDG_BaSTaD 2003.02.14 06:19

    ==> Indy는 아시는 것처럼 Block Type Socket입니다. Block과 Non-Block사이에는 서로 이견이 많지만, 사용자 취양과 OS에 따라 선택적으로 사용하시면 됩니다. 제 생각은 왜 굳이 Block Type인 Indy로 Non-Block 처럼 사용하시나 모르겠네요 ^^; Delphi에 내장되어 있는 Socket이 마음에 않드신다면 ICS를 추천해 드립니다. Non-Block Type이면서 자체 Message Synchronizer가 있어 Block처럼 사용할 수 있으며, Indy처럼 UI 자체가 블럭되지 않는 장점이 있습니다. Non-Block에 Message-Driven을 조합해서 만들었습니다. 아주 훌륭하죠 ^^;

    그래도 굳이 사용하시려면, 해결 방법은 아래 MIN님이 말씀데로 Thread로 Wrapping해야할 것입니다. Indy는 작업중에는 UI 자체도 Block되기 때문이죠.. TThread.OnTerminate()를 사용하셔서. 작업 완료를 Event로 날리시면 모양새는 비슷해지죠 ^^;

    ps. 즐프 & 즐타
      참고로) ICS(Internet Component Suit)은 http://overbyte.delphicenter.com/frame_index.html 요기에 있구요. 최근 SSL 작업도 하고있군요 ^^;

  • Profile
    구창민 2003.02.13 00:01
    안녕하세요? 구창민입니다.

    그 Timer 가 하는 행동을 똑같이 하는 Thread 를 하나 만드시면 됩니다.

    Thread 에 대한 개별적인 강의는 강의실에서 검색해 보심 해결되실 거구여

    그럼~ 항상 즐거운 프로그래밍 하시길~~


    • ji
    • 2003.02.12 23:46
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 양충규
    • 2003.02.12 22:35
    • 2 COMMENTS
    • /
    • 0 LIKES
    • KDDG_BaSTaD
      2003.02.14 06:19
      ==> Indy는 아시는 것처럼 Block Type Socket입니다. Block과 Non-Block사이에는 서로 이견이 많지만,...
    • 구창민
      2003.02.13 00:01
      안녕하세요? 구창민입니다. 그 Timer 가 하는 행동을 똑같이 하는 Thread 를 하나 만드시면 됩니다. ...
    • 이정택
    • 2003.02.12 22:04
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김형식
      2003.02.13 01:25
      캐릭터셋 문제가 아닐까 싶네요. 폰트 다이얼로그에서 캐릭터셋을 한글로 맞춰보세요.
    • 구창민
      2003.02.12 22:33
      TreeView 의 Font 의 스크립트를 한글로 바꾸어 보세여.. 정답이 아닐수도 있습니다. 즐거운 프로그...
    • 구니
    • 2003.02.12 21:50
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 머슴
      2003.02.13 01:21
        http://www.oracle.com/kr/download/index.html?databases.html   여기 한번 가...
    • 송흥순
    • 2003.02.12 21:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 갈매기
      2003.02.12 21:28
      두대의 컴이 os가 틀리다면 그런 문제가 발생합니다. 예를 들자면 한대는 win98이고 한대는 nt계열이라면 ...
    • 나현찬
    • 2003.02.12 21:03
    • 2 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2003.02.12 23:57
      퀵리포트의 최대단점이라고 말할수있네요... 그래도 레이저면 어느정도 맞겠는데... 잉크젯이나 도트가 있...
    • KDDG_Cali
      2003.02.12 22:21
      이게 정상인지 비정상인지는 모르겠으나 기종이 틀리다면 잘 안 맞더라고요. 같은 HP라도 틀리게 나오죠.....
    • J
      2003.02.12 21:37
      update employee set dept_code = emp_code 간단하죠??
    • 강석찬
      2003.02.12 21:34
      procedure TForm1.Button1Click(Sender: TObject); begin   with query1 do begin  &nbs...
    • 구창민
      2003.02.12 22:36
      오래전에 이미 질문이 많이 나오던 내용이군여 검색을 하셨더라면 손쉽게 해결하셨을 텐데.. 아래 ...
    • 한경섭
      2003.02.13 00:24
      정말 감사합니다. 맞습니다, 맞고요. 그럼 2번째(DBGrid내의 Combobox클릭)는 어떻게 해야하는지 알려주...
    • 강인규
      2003.02.12 20:53
      Close 와 Open 함수의 원형입니다. procedure TDataSet.Open; begin   Active := True; en...
    • Galaxy
    • 2003.02.12 19:01
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김민수
    • 2003.02.12 18:57
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2003.02.12 19:54
      안녕하세여? 구창민입니다. 파일의 생성일자가 곧 파일을 컴파일한 날짜가 아닐까여? 컴파일을 하...
    • 최용일
      2003.02.12 23:50
      제가 너무 어렵게 생각했나 보네요... 사용자가 파일생성일을 변경하거나 하면 바뀌어지니까... 별의미...
    • 정보근
      2003.02.13 19:20
        맞아요!!!   생성일이 바뀌니 바로 문제가 되네요..   FTP로 다운...
    • 정보근
      2003.02.12 20:37
        도움주셨어 감사합니다.   덕분에 문제는 해결이 된것 같읍니다.   ...
    • 구창민
      2003.02.12 22:31
      아래 코드들을 참고하시면 되겠네여~ 항상 즐거운 프로그래밍 하시길~ procedure TFileInfoForm.GetF...
    • 정보근
      2003.02.12 23:43
      정말 감사합니다. - 내용무
    • 최용일
      2003.02.12 19:40
      안녕하세요. 최용일입니다. 제가 생각하기에는 프로그램에서 직접 컴파일한 날짜를 가져오는 방법은 없...
    • • • •
    • 열심히
      2003.02.12 20:44
      오라클안에 BIN 폴더안에 해당 파일들이 들어있습니다... 오라클을 깔면 패스는 잡히니깐 위 답글을 다...
    • 머슴
      2003.02.12 19:29
      기본적으로 BDE를 이용하시려면  SQL*Net를 설치가 되어 있어여 합니다. (보통 설치후 재...
    • gokick
      2003.02.12 19:23
      오라클 버전에 따라 틀립니다. 오라클 설치하셨다면 오라클 경로의 Bin으로 Path가 잡혀 있는지 확인 하...
    • 이병훈
      2003.02.13 23:38
      "오라클 설치하셨다면 오라클 경로의 Bin으로 Path가 잡혀 있는지 확인"의 말뜻을 잘 모르겠습니다. 유닉...
    • 5565
    • 2003.02.12 08:12
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.02.12 19:42
      안녕하세요. 최용일입니다. 메일로 답변드렸는데... 또 보내요... var     Key...
    • 안중태
      2003.02.13 00:46
      최용일님께서 알려주신대로 그대로 했습니다. 밑에는 Ctrl+L 인데 제가 Ctrl+O로 고치고 메모장을 뛰우고...
    • 최용일
      2003.02.13 10:20
      안녕하세요. 최용일입니다. 그냥 Ctrl-O누르는거랑 메뉴의 엑셀레이터키인 Ctrl-O를 누르는거하고는 많...
    • 아폴론
    • 2003.02.12 04:39
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_hyun
      2003.02.12 19:01
      아래 트라이문 없이 해보세요 그냥 쿼리 넣는거만 하면 되내요 저는;; procedure TForm1.Button1Clic...
    • KDDG_ZZOM
      2003.02.12 04:15
      질문의 요지를 잘모르겠네요... 우선 iCount값이 0일때 계속 호출해야되면 for문보다는 while문으로 돌리...
    • 초보에요.
      2003.02.12 21:00
      질문의 어설픔에도 불구하고.. 제가 의도한 대답을 알려주셔서.. 감샤감샤..