在Borland C++ Builder中,使用NMStrmServ和NMStrm组件可以很容易地在两台电脑之间传递文件。当然,你也可以使用基于FTPJ协议的文件传输组件NMFTP,但使用NMStrmServ和NMStrm组件更加方便、快捷。
首先,运行Borland C++ Builder,在窗体Form1中加入一个NMStrmServ组件和一个保存对话框组件SaveDialog。
然后在NMStrmServ1的OnMSG事件中加入:
//保存文件对话框(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
if(SaveDialog1-Execute())
{
//如果目标文件存在则删除
if (FileExists(SaveDialog1-FileName))
DeleteFile(SaveDialog1-FileName);
TFileStream *MyFStream;
//建立文件
MyFStream = new TFileStream(SaveDialog1-FileName, fmCreate);
try
{
MyFStream-CopyFrom(strm, strm-Size);
ShowMessage("接收成功!文件另存为"+SaveDialog1-FileName);
}
catch(...)
{
ShowMessage("接收失败!");
}
//释放
MyFStream-Free();
}
这样,一个接收文件的程序请做好了,紧接着我们做文件发送的程序:
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)再次运行Borland C++ Builder,在新工程的窗体上加入一个NMStrm组件、一个OpenDialog组件、一个按钮Button组件、一个Label组件和一个Edit组件。把Button1的Caption属性改为发送文件,把Label1的Caption属性改为接收主机:,把Edit1的Text属性改为127.0.0.1。
然后双击Button1,在它的OnClick事件中加入代码:
//打开文件对话框
if (OpenDialog1-Execute())
{
TFileStream *MyFStream;
MyFStream = new TFileStream(OpenDialog1-FileName, fmOpenRead);
try
{
//主机名
NMStrm1-Host = Edit1-Text;
NMStrm1-FromName = "NetMasters";
//发送
NMStrm1-PostIt(MyFStream);
ShowMessage("文件"+OpenDialog1-FileName+"发送成功!");
}
catch(...)
{
ShowMessage("文件"+OpenDialog1-FileName+"发送失败!");
}
MyFStream-Free();
}
代码输入完毕,分别编译运行这两个程序。编译完成后,你就可以点击发送程序的发送文件按钮打开一个文件来传送到远程的主机了。本例中默认的接收主机IP地址是127.0.0.1,即本地计算机,你也可以在局域网中的其它计算机上运行接收程序,再在发送程序的主机名里填入该计算机的名字或IP地址,然后打开文件发送。发送成功后,接收程序收到文件并询问保存文件,选择要保存的路径及文件名即可保存接收到的文件。
以上程序在Borland C++ Builder 5.0,Win98/Win2000中运行通过。