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

📄 unit1.cpp

📁 网络编程的一些实例
💻 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)
{
    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)
{
    // UDP does not timeout because it does not connect.
    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 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 ThreshHold = 2048;

     // Load the stream.
    TFileStream *Strm = new TFileStream(UDPStream->Text, fmOpenRead);
    char *Buffer = new char[ThreshHold];
    int BuffSize = Strm->Size;
    int Buffers = BuffSize / ThreshHold;

    for(int i=0; i <= Buffers; i++)
      {
        if(BuffSize > 2048)
          {
            Strm->Read(Buffer, ThreshHold);
            NMUDP1->SendBuffer(Buffer, ThreshHold, ThreshHold);
          }
        else
          {
            Strm->Read(Buffer, BuffSize);
            NMUDP1->SendBuffer(Buffer, BuffSize, BuffSize);
          }

        BuffSize -= ThreshHold;
      }

    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 + -