C++ Builder 6.0中UDP的使用

又可以说是运用bcb中fastnet组件中的NMUDP如何进行网络数据传输

//---------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "SRData.h"
//---------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Memo1->Clear();
}
//---------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(OpenDialog1->Execute())
{
Edit3->Text=OpenDialog1->FileName;
}
Memo1->Text="";
}
//---------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if(Edit3->Text=="")
{
ShowMessage("请选择一个您要传送的文件.");
return;
}
NMUDP1->RemoteHost=Edit1->Text; //设置远程主机和端口号
NMUDP1->RemotePort=StrToInt(Edit2->Text);//端口号,我看到一般博客上说最好与LocalPort是一样的,也不知道对不对?!!!
NMUDP1->ReportLevel=Nmudp::Status_Basic;//一般处于这种模式就好,我也不知道有什么意义?!!
const int ThreshHold=2048;
//载入文件流
TFileStream *Strm=new TFileStream(Edit3->Text,fmOpenRead);
char *Buffer=new char[ThreshHold];
//char Buffer[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);//发送数据
//BuffSize-=ThreshHold;
}
else
{
Strm->Read(Buffer,BuffSize);
NMUDP1->SendBuffer(Buffer,ThreshHold,ThreshHold);
}
BuffSize-=ThreshHold;
// memset(&Buffer,0,sizeof(Buffer));
ShowMessage("hehe");
}
delete[] Buffer;
delete Strm;
Memo1->Lines->Add("");
}
//---------------------------------------
void __fastcall TForm1::NMUDP1DataReceived(TComponent *Sender,
int NumberBytes, AnsiString FromIP, int Port)
{
char *TmpBuffer=new char[NumberBytes+1];
int i;
i=0;
//读取接收到的文件流
try{
NMUDP1->ReadBuffer(TmpBuffer,NumberBytes,i);//接受数据
TmpBuffer[NumberBytes]='\0';
Memo1->Text=Memo1->Text+TmpBuffer;
}
__finally{
delete[] TmpBuffer;
}
}
//---------------------------------------


void __fastcall TForm1::NMUDP1DataSend(TObject *Sender)
{
StatusBar1->Panels->Items[0]->Text="文件传输完毕。"; 

}


我又测了下,UDP能够正确使用了,在C++ Builder下,原先的错误是IP地址不对。LocalPort和RemotePort最好一致,是因为这样不会因为搞不清那个是本地,那个是目标的端口号,而出现混乱。还有发送的变量名字搞错了,发送数据错误。。。我是点播方式进行的。用两台电脑实现的UDP通信。还有说法将IP设为255.255.255.0就可以全域广播的方式,还没有试过。。。??

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
C Builder 6.0的Scene是一个可视化设计界面,用于创建和管理动画、游戏和交互式图形应用程序。Scene提供了一个用户友好的图形界面,允许开发人员在设计时将图形对象和行为直观地组织在一个场景。 在C Builder 6.0使用Scene,开发人员可以通过拖放图形对象和组件来创建场景。用户可以使用Scene编辑器,在场景添加、删除和编辑各种图形对象,例如形状、图像、文本和按钮。用户还可以为这些对象添加交互行为和动画效果,使应用程序更加生动和多样化。 Scene还提供了丰富的属性设置和事件处理功能。用户可以使用属性编辑器修改场景各个对象的属性,如位置、大小、颜色、字体等。用户还可以定义事件处理程序,以响应用户的输入和交互,例如点击按钮、拖拽图形等。 C Builder 6.0的Scene还集成了一个2D渲染引擎,支持图像和动画的渲染和效果。开发人员可以通过使用内置的渲染引擎,轻松实现动画效果、特殊效果和过渡效果。此外,Scene还支持多媒体和声音的播放,可以为场景添加背景音乐和音效。 总而言之,C Builder 6.0的Scene提供了一个强大且易于使用的图形设计工具,使开发人员能够快速创建各种交互式图形应用程序。无论是游戏开发、多媒体应用还是动画设计,Scene都为开发人员提供了一个全面且灵活的开发环境。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值