Q&A

  • Indy콤포넌트의 Readln 메소드에서의 의문점...
안녕하세요?
인디컴포넌트를 사용하는중에 의문사항이 생겨서 글을 올립니다.

strMsg := fmClient.IdTCPClient1.ReadLn;

위문은 Client 소스부분이구요, 서버에서 날리는 데이타를 받아들입니다. 그런데 서버에서는 분명히 데이타를 보냈는데, 받지 못하는 경우가 있더군요.  어떤 이유에선가요? 이상해서 비주얼베이직으로 똑같이 작성했더니 데이타가 받아지더라구요. 이말은 서버에서는 데이타를 문제없이 보냈다는 거예요. 문제는 델파이에서 작성한 위의 소스로는 데이타를 받지 못한다는 것인데요..  답변좀 부탁드립니다.


3  COMMENTS
  • Profile
    최용일 2002.09.05 08:56
    안녕하세요. 최용일입니다.

    저도 통신은 거의 대부분 인디를 쓰는데... 아직까지 서버에서 보낸 데이터를 제대로 못받는 경우는 없었습니다... 뭔가 로직상의 문제가 아닐런지...

    ^^ 항상 즐코하세요...

  • Profile
    한마음 2002.09.05 19:23
    답변감사합니다.  수고스럽겠지만, 아래 코드를 조금 살펴보아주세요.. Client 쪽의 소스이거든요.. 데이타가 오면 Memo1에 보여지게 했습니다. 뭐가 잘못되어서 데이타를 못 받는지 도움을 부탁드립니다.

    .
    .
    .
    type
      TMyThread = class(TThread)
      private
            Msg: String;
            procedure View;
      public
            procedure Execute; override;
      end;

      TfmClient01 = class(TForm)
        IdTCPClient1: TIdTCPClient;
        Memo1: TMemo;
        procedure edMsgKeyPress(Sender: TObject; var Key: Char);
      private
        MyThread: TMyThread;
      public
            { Public declarations }
      end;

    var
      fmClient01: TfmClient01;

    implementation

    procedure TMyThread.View;
    begin
      fmClient01.Memo1.Lines.Add(Msg);
    end;

    procedure TMyThread.Execute;  //Thread 실행
    begin

      while not Terminated do
      begin
        try
          Msg := fmClient01.IdTCPClient1.ReadLn;
          Synchronize(View);
        except
          Terminate;
        end;
      end;
    end;

    procedure TfmClient01.btnConnectClick(Sender: TObject);
    begin
      IdTCPClient1.Host:='203.251.11.74';
      IdTCPClient1.Port := 9876;
      IdTCPClient1.Connect;
      MyThread := TMyThread.Create(true);
      MyThread.FreeOnTerminate := true;
      MyThread.Resume;
    end;

    procedure TfmClient01.edMsgKeyPress(Sender: TObject; var Key: Char);
    begin
          //데이타전송부분
    end;
  • Profile
    최용일 2002.09.06 05:34
    안녕하세요. 최용일입니다.

    별루 도움은 안되겠지만 쓰레드에 브레이크포인트 설정하시구 한줄 한줄 디버깅해보세요...

    아마도 제 생각에는 중간에 예외가 발생해서 쓰레드가 종료되는것 같네요...

    ^^ 항상 즐코하세요...