//---------------------------------------------------------------------------
#include <vcl.h>
#include <inifiles.hpp>
#include <dir.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
#include "Unit5.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::tftp1ReadFile(TObject *Sender,
AnsiString &FileName, const TPeerInfo &PeerInfo, bool &GrantAccess,
TStream *&AStream, bool &FreeStreamOnComplete)
{
TIniFile *ini=new TIniFile(".\\tftp.ini");
TFileStream *fstream;
AnsiString Fn =ini->ReadString("open","edt2",ExtractFileDir(Application->ExeName)) + FileName.c_str();
FileName = Fn;
//string a=DateToStr(Date())+TimeToStr(Time())+"£»Sending"+FileName+PeerInfo.PeerIP;
try{
fstream = new TFileStream(FileName,fmOpenRead | fmShareDenyWrite );
tmr1->Enabled=true;
AStream = fstream;
if(ini->ReadString("open","che2","0")==1)
{
mmo2->Text=mmo2->Text+Date();
mmo2->Text =mmo2->Text +" "+Time();
mmo2->Text =mmo2->Text+"£»Sending£»"+FileName+"£»"+PeerInfo.PeerIP+"\n";
mmo2->Lines->SaveToFile(ini->ReadString("open","edt1",ExtractFileDir(Application->ExeName)+"tftp.log"));
ClearLog();
/* if(mmo2->Text.Length()>=mmo2->MaxLength-2000)
{
ShowMessage("Log file space less than 2 KB, please clear the log file!");
} */
}
}
catch(...){
mmo1->Lines->Add("File is not found") ;
GrantAccess =FALSE;
}
delete ini;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::tftp1Status(TObject *axSender,
const TIdStatus axStatus, const AnsiString asStatusText)
{
AnsiString msg = "[OnStatus]\t"+asStatusText+"\n";
mmo1->Lines->Add(msg);
stat1->Panels->Items[0]->Text=msg;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::tftp1TransferComplete(TObject *Sender,
const bool Success, const TPeerInfo &PeerInfo, TStream *AStream,
const bool WriteOperation)
{
tmr1->Enabled=false;
AnsiString msg = "[TransferComplete]\t"+PeerInfo.PeerIP;
mmo1->Lines->Add(msg);
if(AStream) AStream->Free();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::tftp1UDPRead(TObject *Sender, TStream *AData,
TIdSocketHandle *ABinding)
{
AnsiString msg = "[UDP Read]\t "+ ABinding->PeerIP+"\n";
mmo1->Lines->Add(msg);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::tftp1WriteFile(TObject *Sender,
AnsiString &FileName, const TPeerInfo &PeerInfo, bool &GrantAccess,
TStream *&AStream, bool &FreeStreamOnComplete)
{
TIniFile *ini=new TIniFile(".\\tftp.ini");
TFileStream *strm;
AnsiString Fn = ini->ReadString("open","edt2",ExtractFileDir(Application->ExeName)) + FileName.c_str();
FileName = Fn;
try{
strm = new TFileStream(FileName, fmCreate|fmShareExclusive );
// mmo1->Lines->Add("/n");
tmr1->Enabled=true;
AStream = strm;
GrantAccess = TRUE;
FreeStreamOnComplete = TRUE;
if(ini->ReadString("open","che2","0")==1)
{
mmo2->Text=mmo2->Text+Date();
mmo2->Text =mmo2->Text +" "+Time();
mmo2->Text =mmo2->Text+"£»receives£»"+FileName+"£»"+PeerInfo.PeerIP+"\n";
mmo2->Lines->SaveToFile(ini->ReadString("open","edt1",".\\tftp.log"));
ClearLog();
/* if(mmo2->Text.Length()>=mmo2->MaxLength-2000)
{
ShowMessage("Log file space less than 2 KB, please clear the log file!");
} */
}
}
catch(...){
mmo1->Lines->Add("write document failure") ;
GrantAccess =FALSE;
}
delete ini;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::tmr1Timer(TObject *Sender)
{
TIniFile *ini=new TIniFile(".\\tftp.ini");
if(ini->ReadString("open","che1","0")==0)
{
tmr1->Enabled=0;
return;
}
mmo1->SelStart=mmo1->Text .Length();
mmo1->SelText="##";
//mmo1->Text=mmo1->Text+"######";
delete ini;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
mmo1->Clear();
mmo2->Clear();
TIniFile *ini=new TIniFile(".\\tftp.ini");
mmo2->MaxLength=ini->ReadString("open","edt3",20).ToInt()*1000;
try{
mmo2->Lines->LoadFromFile(ini->ReadString("open","edt1",""));
}
catch(...)
{
}
Form1->Caption="TFTP Server "+ini->ReadString("open","edt2",ExtractFileDir(Application->ExeName));
try
{
tftp1->Active=true;
}
catch(...)
{
ShowMessage("The port is occupied, the process can not start!");
tftp1->Active=false;
tmr2->Enabled=true;
Form1->Close();
}
delete ini;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::print1Click(TObject *Sender)
{
if(!PrintDialog1->Execute())
return;
if(mmo1->Text !="")
{
TPrinter * pPrinter=Printer();
pPrinter->Title="log";
pPrinter->BeginDoc();
pPrinter->Canvas->Font->Size=mmo1->Font->Size;
pPrinter->Canvas->Font->Name=mmo1->Font->Name;
int y=300;
for(int i=0;i<mmo1->Lines->Count;i++)
{
pPrinter->Canvas->TextOut(50,y,mmo1->Lines->Strings[i]);
y+=pPrinter->Canvas->TextHeight("A");
}
pPrinter->EndDoc();
}
else
{
ShowMessage("Can not display the text");
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::tmr2Timer(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Options1Click(TObject *Sender)
{
Form2->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btn3Click(TObject *Sender)
{
mmo1->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LogFile1Click(TObject *Sender)
{
TIniFile *ini=new TIniFile(".\\tftp.ini");
Form3->Caption="Log File " +ini->ReadString("open","edt1","");
try{
Form3->mmo1->Lines->LoadFromFile(ini->ReadString("open","edt1",ExtractFileDir(Application->ExeName)+"tftp.log"));
}
catch(...)
{
Form3->mmo1->Lines->Add("Did not find the log file");
}
Form3->ShowModal();
delete ini;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Exit1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::aboutDEXINGTFTPServer1Click(TObject *Sender)
{
AboutBox->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClearLog()
{
TIniFile *ini1=new TIniFile(".\\tftp.ini");
if(mmo2->Text.Length()>=mmo2->MaxLength)
{
//ShowMessage("Log file for storage, will have to clear the log file");
DeleteFile(ini1->ReadString("open","edt1","")) ;
}
delete ini1;
}
//---------------------------------------------------------------------------
tftp.rar_IdTrivialFTP_tftp server
版权申诉
45 浏览量
2022-09-24
01:28:10
上传
评论
收藏 536KB RAR 举报
钱亚锋
- 粉丝: 86
- 资源: 1万+
最新资源
- HITK0203MP-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- HITK0202MP-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说
- 电子电气工程师使用的单位和符号
- HITK0201MP-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- MyBatis动态SQL:构建灵活查询的利器.md
- HITJ0303MP-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- tesseract安装包
- 1_32陀螺仪舵机.zip
- HITJ0302MP-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- XILINXFPGA源码PCIExpress标准概述
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈