📄 main.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "main.h"
#include "time.h"
#include "Psock.hpp"
#include "stdio.h"
#include "math.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFUDP *FUDP;
//---------------------------------------------------------------------------
__fastcall TFUDP::TFUDP(TComponent* Owner)
: TForm(Owner)
{
ValidStream=false;/*****************/
}
//---------------------------------------------------------------------------
void __fastcall TFUDP::BtSendMsgClick(TObject *Sender)
{
NMUDP1->RemoteHost=Host->Text;
NMUDP1->RemotePort=StrToInt(Port->Text);
NMUDP1->ReportLevel=Nmudp::Status_Basic;
NMUDP1->SendBuffer(UDPMsg->Text.c_str(),strlen(UDPMsg->Text.c_str()),strlen(UDPMsg->Text.c_str()));
// Output->Lines->Add("");
}
//---------------------------------------------------------------------------
void __fastcall TFUDP::BtSendStreamClick(TObject *Sender)
{
if(!ValidStream)
{MessageBox(NULL,"need a file to send ","Invalid input",MB_ICONERROR);
return;
}
NMUDP1->RemoteHost=Host->Text;
NMUDP1->RemotePort=StrToInt(Port->Text);
NMUDP1->ReportLevel=Nmudp::Status_Basic;
const int ThreashHold=2048;
TFileStream *Strm= new TFileStream(UDPStream->Text,fmOpenRead); //打开文件
char *Buffer =new char[ThreashHold];
int BuffSize=Strm->Size; // 文件长度
int buffers =BuffSize/ThreashHold;
for(int i=0;i<=buffers;i++)
{
if(BuffSize>2048)
{
Strm->Read(Buffer,ThreashHold);
NMUDP1->SendBuffer(Buffer,ThreashHold,ThreashHold);
}
else
{
Strm->Read(Buffer,BuffSize);
NMUDP1->SendBuffer(Buffer,BuffSize,BuffSize);
}
BuffSize-=ThreashHold;
}
delete []Buffer;
delete Strm;
Output->Lines->Add("");
}
//---------------------------------------------------------------------------
void __fastcall TFUDP::Button1Click(TObject *Sender)
{
if(OpenDialog1->Execute())
{
UDPStream->Text= OpenDialog1->FileName;
ValidStream=true;
}
else
{
UDPStream->Text= "";
ValidStream=false;
}
}
//---------------------------------------------------------------------------
void __fastcall TFUDP::NMUDP1DataSend(TObject *Sender)
{
StatusBar1->SimplePanel=true;
StatusBar1->SimpleText="Data Sent";
}
//---------------------------------------------------------------------------
void __fastcall TFUDP::NMUDP1StreamInvalid(bool &handled, TStream *Stream)
{
ShowMessage("Invalid Stream:Stream contains no data");
}
//---------------------------------------------------------------------------
void __fastcall TFUDP::NMUDP1Status(TComponent *Sender, AnsiString status)
{
if(StatusBar1!=0)
{
StatusBar1->SimpleText=status;
}
}
//---------------------------------------------------------------------------
void __fastcall TFUDP::NMUDP1InvalidHost(bool &handled)
{
AnsiString TmpStr;
if(InputQuery("Invalid Host","Specify a new host:",TmpStr))
{
NMUDP1->RemoteHost=TmpStr;
handled=true;
}
}
//---------------------------------------------------------------------------
void __fastcall TFUDP::NMUDP1DataReceived(TComponent *Sender,
int NumberBytes, AnsiString FromIP, int Port)
{
char *TmpBuffer=new char[NumberBytes+1];
int i;
NMUDP1->ReadBuffer(TmpBuffer,NumberBytes,i);
TmpBuffer[NumberBytes]='\0';
Output->Lines->Add("FromIP:" + FromIP + ":" + "Port:" + Port + ":" +"Bytes:" + NumberBytes + ":" + TmpBuffer);
delete []TmpBuffer;
/* if (NumberBytes<20&&NumberBytes>0)
{
char Buff[20];
int j;
NMUDP1->ReadBuffer(Buff, 20, j);
Buff[j]=0;
Output->Lines->Add("FromIP:" + FromIP + ":" + "Port:" + Port + ":" +"Bytes:" + NumberBytes + ":" + Buff);
}
else if(NumberBytes<0)
Output->Lines->Add("can't reciver data");
else
Output->Lines->Add("Buffer too small for data");
*/
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -