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