首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

IdTCPClient1->IOHandler->Write太快发送失败?解决方法

2012-08-13 
IdTCPClient1-IOHandler-Write太快发送失败?for (int i0 i10240 i++){IdTCPClient1-IOHandler-Wr

IdTCPClient1->IOHandler->Write太快发送失败?
for (int i=0; i<10240 ; i++)
{
IdTCPClient1->IOHandler->Write(MsgStr, 32);//TCP发送,每次发送32个字符
Sleep(5);
}
如果没有Sleep(5)这句,接收端就只接收到最后发的一次数据,而且如果Sleep()的时间太少的话接收的数据也补全。
请问是不是发送太快就拥堵了?但是TCP不是有机制保证发送一定顺利到达吗?
请高手详解

[解决办法]
跟你接收端有关系吧
给你一个简单的例子

C/C++ code
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();} 

热点排行