CBuilder6.0采用NMUDP控件写UDP发送程序,最多只能发送8K的数据,求高手指导

紫龙2012 2015-08-12 12:31:11
CBuilder6.0采用NMUDP控件写UDP发送程序,最多只能发送8K的数据,求高手指导。贴代码如下:
//发送数据
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if(Edit1->Text == "")
{
ShowMessage("请选择一个文件进行传送!");
return;
}
if(Edit2->Text == ""||Edit3->Text == "")
{
ShowMessage("请正确填写远程主机IP和端口号");
return;
}

NMUDP1->RemoteHost = Edit2->Text;
NMUDP1->RemotePort = StrToInt(Edit3->Text);

NMUDP1->ReportLevel = Status_Basic;
Memo2->Clear();
//载入文件流
TFileStream *Strm = new TFileStream(Edit1->Text,fmOpenRead);
const int bufLength = 2048;
char *Buffer = new char[bufLength];
int BuffSize = Strm->Size;
int Buf = BuffSize/bufLength;

for(int i=0;i<Buf+1;i++)
{
if(BuffSize>bufLength)
{
Strm->Read(Buffer,bufLength);
NMUDP1->SendBuffer(Buffer,bufLength,bufLength);
}
else
{
Strm->Read(Buffer,BuffSize);
NMUDP1->SendBuffer(Buffer,BuffSize,BuffSize);
}
BuffSize=BuffSize-bufLength;
}

delete Buffer;
delete Strm;

接收方
void __fastcall TForm1::NMUDP1DataReceived(TComponent *Sender,
int NumberBytes, AnsiString FromIP, int Port)
{
char *TmpBuff = new char[NumberBytes+1];
int i ;
//读取接收到的文件流
NMUDP1->ReadBuffer(TmpBuff,NumberBytes,i);
TmpBuff[NumberBytes] = '\0';
Memo2->Text = Memo2->Text+TmpBuff;
int iFileHandle;
if(!FileExists("E:\\dd.txt"))
iFileHandle = FileCreate("E:\\dd.txt");
else
{
iFileHandle = FileOpen("E:\\dd.txt",fmOpenReadWrite);
}

FileSeek(iFileHandle,0,2);
FileWrite(iFileHandle,TmpBuff,NumberBytes+1);
FileClose(iFileHandle);
delete TmpBuff;
}
...全文
1226 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
土著巫师 2016-03-31
  • 打赏
  • 举报
回复
什么年代了,居然还有人用NMUDP开发UDP通讯程序。 可以肯定与硬件一毛钱关系木有。初步扫了一下代码,如果代码本身没有错误(从来没用过NMUDP这个垃圾,推荐你用ICS异步组件,ICS官网可下载),可能是丢包造成的,建议不要在接收事件里每次数据来的时候重新打开或新建文件,建议把文件打开或新建的动作移到事件外面预先准备好,这样每次数据来时定位文件末尾写入即可。当然也有可能是NMUDP本身不完善你使用不得法的原因,暂不在考虑中。
缘中人 2015-12-02
  • 打赏
  • 举报
回复
能不能分多次发
我不懂电脑 2015-12-02
  • 打赏
  • 举报
回复
8k是因为网络硬件的限制造成的。需要更换更好的网络硬件
紫龙2012 2015-12-02
  • 打赏
  • 举报
回复
我是分成了2048个字节在传输,可还是只能传8k,所以才郁闷呢,说硬件限制也不太可能吧,都什么年代了 随便一个交换机也应该不止8k,我问了高手同事,他说网卡的缓存是8k,应该跟这个有关系,但他也没空细究
紫龙2012 2015-12-01
  • 打赏
  • 举报
回复
是不是太简单了 都没有人回答 好伤心~~··
内容概要:本文围绕“单相逆变器闭环逆变电路PWM模型仿真研究”展开,基于Simulink平台构建单相逆变器的闭环控制系统仿真模型,重点研究PWM调制技术在逆变电路中的应用与实现。文中详细阐述了系统架构设计、电压电流双闭环控制策略的实现原理、控制器参数设计及仿真建模全过程,并通过仿真结果验证了控制方案在动态响应、稳态精度与系统稳定性方面的有效性。同时,文档还涵盖多种电力电子系统典型应用场景,如多类型短路故障仿真(中性点不接地、经小电阻接地、经消弧线圈接地等)、软开关技术、微电网能量管理、MPPT控制等,体现出较强的技术综合性和工程实践价值。; 适合人群:电气工程、自动化、电力电子与新能源等相关专业的高校本科生、研究生、科研人员,以及从事电力系统仿真、逆变器设计与新能源并网技术研发的工程技术人员。; 使用场景及目标:①掌握基于Simulink的单相逆变器闭环控制系统建模与PWM仿真方法;②深入理解双闭环控制、SPWM/SVPWM调制、系统稳定性分析等核心技术原理;③为课程设计、毕业设计、科研项目或实际工程开发提供可复用的仿真模型与技术支持; 阅读建议:建议结合文中仿真模型动手实践,重点掌握PI控制器参数整定、PWM信号生成机制与仿真结果分析方法,同时可延伸学习文档中涉及的软开关、故障仿真、微电网控制等关联技术,以拓展系统级设计能力。

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧