说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

如何使用TNMUDP实现传一个大的文件?

编辑:说三道四文库 发布时间:2018-04-23 02:31
HTML文档下载 WORD文档下载 PDF文档下载
使用TNMUDP传输一个大的文件,将文件读到流里面,然后再从流写到数组里面,用sendbuffer发送,发送没有问题,可是在接收的时候只能收到8200个字节,其余的内容收不到。请问为什么?可不可以在发送的时候,每调用一次sendbuffer都加以个延时?可是加延时应该用什么函数?
void __fastcall TForm1::BtSendStreamClick(TObject *Sender)
{
    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("");
}//不明白的意思,这样可以么?BCB代码

延时使用sleep函数
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘