⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.~cpp

📁 send data using udp
💻 ~CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 ValidStream=false;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::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->Text=Output->Text+TmpBuffer;
  delete []TmpBuffer;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::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()));
  Output->Lines->Add("");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BtLoadFileClick(TObject *Sender)
{
  if(OpenDialog1->Execute())
    {
      UDPStream->Text= OpenDialog1->FileName;
      ValidStream=true;
    }
  else
    {
     UDPStream->Text= "";
      ValidStream=false;
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::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 TForm1::NMUDP1DataSend(TObject *Sender)
{
  StatusBar1->SimplePanel=true;
  StatusBar1->SimpleText="Data Sent";

}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMUDP1InvalidHost(bool &handled)
{
  AnsiString TmpStr;
  if(InputQuery("Invalid Host","Specify a new host:",TmpStr))
    {
     NMUDP1->RemoteHost=TmpStr;
     handled=true;
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMUDP1Status(TComponent *Sender, AnsiString status)
{
 if(StatusBar1!=0)
  {
   StatusBar1->SimpleText=status;
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMUDP1StreamInvalid(bool &handled, TStream *Stream)
{
  ShowMessage("Invalid Stream:Stream contains no data");        
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -