在Borland C++ Builder中,使用NMStrmServ和NMStrm組件可以很容易地在兩台電腦之間傳遞文件。當然,你也可以使用基於FTPJ協議的文件傳輸組件NMFTP,但使用NMStrmServ和NMStrm組件更加方便、快捷。
首先,運行Borland C++ Builder,在窗體Form1中加入一個NMStrmServ組件和一個保存對話框組件SaveDialog。
然後在NMStrmServ1的OnMSG事件中加入:
//保存文件對話框
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();
}
這樣,一個接收文件的程序請做好了,緊接著我們做文件發送的程序:
再次運行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中運行通過。