IdTCPClient1->IOHandler->Write太快发送失败?

rickys2080 2012-03-31 10:52:14
for (int i=0; i<10240 ; i++)
{
IdTCPClient1->IOHandler->Write(MsgStr, 32); //TCP发送,每次发送32个字符
Sleep(5);
}
如果没有Sleep(5)这句,接收端就只接收到最后发的一次数据,而且如果Sleep()的时间太少的话接收的数据也补全。
请问是不是发送太快就拥堵了?但是TCP不是有机制保证发送一定顺利到达吗?
请高手详解
...全文
363 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
周药师 2012-04-16
  • 打赏
  • 举报
回复
跟你接收端有关系吧
给你一个简单的例子

void __fastcall TForm1::FormCreate(TObject *Sender)
{
IdTCPServer1->DefaultPort = 8001 ;
IdTCPClient1->Host = "127.0.0.1" ;
IdTCPClient1->Port = 8001 ;
IdTCPServer1->Active = true ;
}

void __fastcall TForm1::IdTCPServer1Execute(TIdContext *AContext)
{
UnicodeString CmdString =AContext->Connection->IOHandler->ReadLn(enUTF8);
Memo1->Lines->Add(CmdString) ;
}

void __fastcall TForm1::Button3Click(TObject *Sender)
{
if(!IdTCPClient1->Connected())
{
IdTCPClient1->Connect();
}
for(int i=0;i<1024;i++)
IdTCPClient1->IOHandler->WriteLn(IntToStr(i)+ ":发送的数据",enUTF8);
IdTCPClient1->Disconnect();
}

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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