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

📄 main.cpp

📁 一个用C++ builder6.0做的UDP通信测试程序
💻 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 + -