实现两台远程主机的文件拷贝,如从A机将boot.txt文件拷贝到B机上,我用copyfile函数进行拷贝,我的步骤是:连接A机——选择相应目录,并设置共享(如共享名为share)——然后取得“源”(如\\10.0.3.147\share\boot.txt)——连接B机——让B机执行copyfile(源,本机目录,false)——然后取消A机的共享。不过我觉得这样是不是太多步骤了,大家有没有更简单的方法教我,我刚学不久,很多都不太懂,请大家帮帮我啊(最好有代码),也可以发到我邮箱([email protected]),谢谢!!!

解决方案 »

  1.   

    给你一个文件传输程序,记得给分哈
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ComCtrls, StdCtrls, Psock, NMSTRM, ExtCtrls;type
      TForm1 = class(TForm)
        OpenDialog1: TOpenDialog;
        SaveDialog1: TSaveDialog;
        NMStrm1: TNMStrm;
        NMStrmServ1: TNMStrmServ;
        Edit1: TEdit;
        Label1: TLabel;
        Edit2: TEdit;
        Label2: TLabel;
        Button1: TButton;
        StatusBar1: TStatusBar;
        Button2: TButton;
        Label3: TLabel;
        Timer1: TTimer;
        Button3: TButton;
        procedure Button2Click(Sender: TObject);
        procedure NMStrm1Connect(Sender: TObject);
        procedure NMStrm1ConnectionFailed(Sender: TObject);
        procedure NMStrm1Disconnect(Sender: TObject);
        procedure NMStrm1InvalidHost(var Handled: Boolean);
        procedure Button1Click(Sender: TObject);
        procedure NMStrmServ1ClientContact(Sender: TObject);
        procedure NMStrmServ1Status(Sender: TComponent; Status: String);
        procedure NMStrmServ1MSG(Sender: TComponent; const sFrom: String;
          strm: TStream);
        procedure Timer1Timer(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure Button3Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button2Click(Sender: TObject);
    begin
      close;
    end;procedure TForm1.NMStrm1Connect(Sender: TObject);
    begin
       StatusBar1.SimpleText:='Connected';
    end;procedure TForm1.NMStrm1ConnectionFailed(Sender: TObject);
    begin
      StatusBar1.SimpleText:='connect faile';
    end;procedure TForm1.NMStrm1Disconnect(Sender: TObject);
    begin
        StatusBar1.SimpleText:='disconnect!!';
    end;procedure TForm1.NMStrm1InvalidHost(var Handled: Boolean);
    var tmpstr:String;
    begin
      If InputQuery('invalid host!','specify a new host name:',tmpstr) then
      begin
        NmStrm1.Host:=tmpstr;
        Handled:=True;
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var MyFStream:TFileStream;
    begin
      Edit2.SetFocus;
      if OpenDialog1.Execute then
      begin
        NMStrm1.host:=Edit1.Text;
        NMStrm1.FromName:=Edit2.Text;
        MyFstream:=Tfilestream.Create(OpenDialog1.filename,fmOpenRead);
        try
          NMstrm1.PostIt(MyFStream);
        finally
          Myfstream.Free;
        end;
      end;
      Edit1.SetFocus;
    end;procedure TForm1.NMStrmServ1ClientContact(Sender: TObject);
    begin
      NMStrm1.ReportLevel:=Status_basic;
    end;procedure TForm1.NMStrmServ1Status(Sender: TComponent; Status: String);
    begin
      if StatusBar1<>nil then
         StatusBar1.SimpleText:=Status;
    end;procedure TForm1.NMStrmServ1MSG(Sender: TComponent; const sFrom: String;
      strm: TStream);
    var myStream:TfileStream;
    begin
       if saveDialog1.Execute then
       begin
         Mystream:=TfileStream.Create(SaveDialog1.Filename,fmcreate);
         try
           mystream.CopyFrom(strm,strm.Size);
         finally
           mystream.Free;
         end;//end try
       end;
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
     if (trim(edit1.Text)<>'')
       and (not edit1.Focused) then
     begin
       NMStrmServ1.Host:=Edit1.Text;
       NMStrmServ1.Connect;
     end;end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      NMStrmServ1.free;
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
      NMStrmServ1.Host:=Edit1.Text;
    end;end.
      

  2.   

    你的想法也差不多了。不过,如果文件大的话,用Copyfile可以不太好,一来很慢,而且设共享也不安全。