Q&A

  • Indy 파일전송에 관련해서 질문드립니다.
도저히 해결될 기미가 안보이는군요 ㅠ.ㅠ
파일명과 상태코드, 파일을 레코드로 만들어서
WriteBuffer로 날리고 서버에서 ReadBuffer로 받은뒤
처리를 하려고 하는데 보낼때는 제대로 날라가는거
같은데 받는쪽에서 상태코드는 제대로 인식하는데
파일명과 파일을 인식하질 못하는군요....

가장 궁금한게

type
  MyRecord = Packed Record
    FName : String;
    FLength : Integer;
    FStream : TFileStream;
    MSG : Integer;
  end;

이렇게 레코드를 선언하고

WriteBuffer(MyRecord,SizeOF(MyRecord))
이렇게 보내고


procedure TfrmServer.TCPServerExecute(AThread: TIdPeerThread);
begin
  AThread.Connection.ReadBuffer(MyRec,Sizeof(MyRec));
//  ShowMessage(MyRec.FName);
  Case Myrec.MSG of
      10 :
       Begin
             ....
            ...
            ..
        End;
         .........
이렇게 받는게 맞는지..
그렇다면 TFileStream으로 화일을 불러온것을 어떻게 화일로 저장해야
하는지....  한 일주일정도 고민고민하다 풀릴기미가 보이질 않아
이렇게 도움을 부탁드립니다.
indy와 관련된 소스란 소스는 죄다 찾아보고 나름대로 분석한다고
분석해서 했는데도 제가 아둔해서 그런지 해결이 안되네요....

소스를 올렸습니다..

그럼 좋은하루 되세요.
2  COMMENTS
  • Profile
    최용일 2004.03.10 21:08
    안녕하세요. 최용일입니다.

    보내는 레코드에서  FName과 FStream은 둘다 포인터형의 일종입니다.

    상대편에서 이 포인터(메모리주소)를 받아봤자 아무런 의미가 없죠...

    실질적인 값을 보내세요...

    예를 들자면 스트림에 있는 내용은 직접 Read메소드로 내용을 읽어서 보내세요.

    MyRecord.FStream.Read(Buffer, SizeOfStream);
    인디.WriteBuffer((Buffer, SizeOfStream);

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

  • Profile
    조영근 2004.03.11 01:56
    에고 아는게 너무 없다보니 그 간단한걸 몰랐네요.
    하긴 알면 간단하고 모르면 무지하게 어렵고... ^^;;
    그럼 좋은하루 보내세요