Q&A

  • stream으로 파일전송시 파일명까지 보내는 방법?
델파이 5.0의 stream 예제를 수정하여 텍스트파일을 pc간에

전송하려고 하는데 예제만 가지고는 받는측에서 파일명을

알수가 없어 tmp라는 이름으로만 받게되어 송수신 하기가

매우 어렵습니다

받는 PC의 임의의 디렉토리에 자동으로 보낸 파일명 그대로

저장을 하고 싶습니다

아래 소스에서 어느 부분들을 고쳐야할까요

고수님의 도움 바랍니다

<보내는 PC>

procedure TForm1.Button1Click(Sender: TObject);

var

MyFStream: TFileStream;

begin

If OpenDialog1.Execute then

Begin

NMStrm1.Host := '211.240.119.118';

NMStrm1.FromName := 'NetMasters';

MyFStream := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);

try

NMStrm1.PostIt(MyFStream);

finally

MyFStream.Free;

end;

End;

end;

<받는 PC>

procedure TForm1.NMStrmServ1MSG(Sender: TComponent; const sFrom: String;

strm: TStream);

var

MyFStream: TFileStream;

begin

If FileExists('.tmp') then DeleteFile('.tmp');

MyFStream := TFileStream.Create('.tmp', fmCreate);

try

MyFStream.CopyFrom(strm, strm.size);

finally

MYFStream.Free;

end;



end;







1  COMMENTS
  • Profile
    Ziker 2001.06.15 00:08
    Ziker입니다.



    일단 프로토콜을 정의 하시는게 좋을것 같습니다.



    가령 첫번재 패킷에는 파일이름, 파일 사이즈를 담아서 보내고

    클라이언트 쪽에서 그 첫 패킷에 따라 해당 파일이름을 만들고 해당 파일 사이즈를

    정의 한다음.



    두번째 패킷에서 부터 해당 파일 사이즈가 다 찰때 까지 받는거져.



    TCP/IP특성상 패킷이 날아 오다 손실 되는 경우를 방지하기 위해서

    보낸 패킷과 받은 패킷을 체크 하는 루틴이 필요 할 수도 있습니다.



    참조 내용 이엇습니다. 도움이 되엇을런지 모르겟군요..^^





    peritus wrote:

    > 델파이 5.0의 stream 예제를 수정하여 텍스트파일을 pc간에

    > 전송하려고 하는데 예제만 가지고는 받는측에서 파일명을

    > 알수가 없어 tmp라는 이름으로만 받게되어 송수신 하기가

    > 매우 어렵습니다

    > 받는 PC의 임의의 디렉토리에 자동으로 보낸 파일명 그대로

    > 저장을 하고 싶습니다

    > 아래 소스에서 어느 부분들을 고쳐야할까요

    > 고수님의 도움 바랍니다

    > <보내는 PC>

    > procedure TForm1.Button1Click(Sender: TObject);

    > var

    > MyFStream: TFileStream;

    > begin

    > If OpenDialog1.Execute then

    > Begin

    > NMStrm1.Host := '211.240.119.118';

    > NMStrm1.FromName := 'NetMasters';

    > MyFStream := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);

    > try

    > NMStrm1.PostIt(MyFStream);

    > finally

    > MyFStream.Free;

    > end;

    > End;

    > end;

    > <받는 PC>

    > procedure TForm1.NMStrmServ1MSG(Sender: TComponent; const sFrom: String;

    > strm: TStream);

    > var

    > MyFStream: TFileStream;

    > begin

    > If FileExists('.tmp') then DeleteFile('.tmp');

    > MyFStream := TFileStream.Create('.tmp', fmCreate);

    > try

    > MyFStream.CopyFrom(strm, strm.size);

    > finally

    > MYFStream.Free;

    > end;

    >

    > end;

    >

    >

    >