Q&A

  • 네트웍에서 파일 복사방법??
네트웍으로 연결된 컴퓨터 이름도 찾고 디렉토리 생성하는 루틴을

구현했습니다. 그런데 다른 컴퓨터의 특정 디렉토리로 파일 복사하는

방법을 모르겠습니다.

고수님들의 지도를 한수 부탁합니다.

1  COMMENTS
  • Profile
    구창민 1999.07.09 10:02
    장일형 께서 말씀하시기를...

    > 네트웍으로 연결된 컴퓨터 이름도 찾고 디렉토리 생성하는 루틴을

    > 구현했습니다. 그런데 다른 컴퓨터의 특정 디렉토리로 파일 복사하는

    > 방법을 모르겠습니다.

    > 고수님들의 지도를 한수 부탁합니다.



    장일형님 안녕하세요?

    만약 네트웍으로 공유되어 있는 폴더에서 파일을

    복사하신다면 '네트웍 드라이브명디렉토리명..화일이름' 형태로

    하시고, 파일복사 API 함수는

    CopyFile(pstr, pstr2, false);

    Parameter는

    //CopyFile(소스화일명, 데스트화일명, 플래그) 마지막 인자인

    플래그는 false 일경우 화일이 존재할때 덮어쓴다.)

    로 복사하면 일반 복사와 같이 네트웍 상에서도 복사가 됩니다.



    그렇지 않고, 공유되지 않은 디렉토리에서 복사를 수행하려면

    Socket통신을 이용해야 하는데, 좀 까다롭습니다.

    화일이란 놈이 워낙 믿지못할 변화수가 많이 발생해서,

    이에 따르는 수많은 에러처리 루틴도 작성해야 하구..



    일전에 제가 사용해본 방식은 TServerSocket과 TClientSocket을

    이용한 방식이었습니다.

    간단히 설명드리면, 아래처럼..

    try

    Fstream := Tfilestream.create('Open할 화일명', fmopenread);

    except

    //에러처리;

    end;

    Fstream.ReadBuffer(Fbuffer//화일의 내용을 저장해둘 변수, 1024);

    //화일에서 1024Byte만큼읽어서

    FCsocket.Socket.SendBuf(Fbuffer, 1024);//파일 내용 전송

    end;

    이런 형태로 파일의 끝까지 반복하고 받는 쪽에서는 같은 방법으로

    ReceiveBuf로 읽어서 Write모드로 화일을 생성시킨다음

    그 화일에 쓰는방법을 사용했었습니다.



    그리고, 알고 계셔야 할 한가지 문제점은 1024 정도의 크기로 보낸

    이유인데, 왜냐하면 시스템의 MTU 크기때문입니다.

    전송되는 일련의 바이트 정보는 시스템 버퍼가 관장하며,

    일반적인 윈도우의 MTU는 1500으로 알고 있습니다.

    실제로 보내보니 4000 바이트 이상되는 내용은 버퍼가 처리를 못하고

    중도에 문자열이 잘리는 현상이 자주 발생하더군요..

    PPP 접속일 경우에는 더욱 더 1500 이하로 잘라서 보내야 합니다.

    그래야 안전합니다.

    도움이 되셨나 모르겠습니다.

    그럼...