当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

C++ Builder文件肆意分割传输技术[VC/C++编程]

赞助商链接



  本文“C++ Builder文件肆意分割传输技术[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

一. 前言

目前网络编程技术有很多,普通都是直接操纵编程软件自带的功效函数或控件来完成,用户没必要关心低层的操作,确切带来便利.但机动性不够,假如要传输的文件对比大,则速度慢.假如网络的断线率高,则不得不重新传输.本程序可以降服以上不足,将肆意大小的文件视网络情况在客户端分割成肆意大小的数据流举行发送,在服务端接纳数据流,并组装成原文件.假如网络被中止,则记下位置,待网络恢复后持续从断点的位置传输,终端持续接纳,直到传输完毕.

本程序在Windows2000调试通过,读者可以利用本程序的计划技术利用到其他网络通讯中去.

二.成立程序框架

新建一个工程存为tongxun.bpr,Form文件存为shi.cpp,对Form的属性做以下改正:BorderStyle设为bsSingle,Name设为Form,Position设为PoScreenCenter.在Form上安排2个Tbutton组件,辨别为:Name辨别为Button1和Button2,Caption辨别为"发送图片"和"挑选图片文件",安排1个Timage组件,Name为Image1,安排1个Opendialog,Name为name,用于翻开1个文件,最后安排1个TserverSocket和1个Tclientsocket,Name属性辨别为server和client.

这样就完成了程序框架的成立,如图示:

三.程序实现

本程序是在客户端发送一个2M字节的BMP图片,终端接纳和组装此图片并显示在Form的窗口顶用于考证.本程序便可作为发送端,也可做接纳端,只要在两台互联的计算机上运行便可.

shi.cpp源文件以下:

#include
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
static int shi=0,emod=0,hui=0,x=0,a=0,i=0;
AnsiString filename;
file://---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{ }
file://---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{ client->Active=false;
 client->Port=8888;
 client->Active=true;} file://联接远程计算机
 file://---------------------------------------------------------------------------
 void __fastcall TForm1::clientConnect(TObject *Sender,TCustomWinSocket *Socket)
 { label->Caption="ok";} file://联接成功的提醒.
  file://下面的函数用于接纳数据和组装数据并显示.
  void __fastcall TForm1::serverClientRead(TObject *Sender,
  TCustomWinSocket *Socket)
  { // static long a=0;
   static TMemoryStream* pms = new TMemoryStream();
   void *z[20000]; file://定义缓冲区大小
   if(shi!=1)
   {Socket->ReceiveBuf(z,20000); file://接纳SOCKET中的数据流
    pms->Position=a;
    pms->WriteBuffer(z,20000); file://写入缓冲区
    a=a+20000; file://改变内存流指针
    client->Active=false; file://每次发送前要判断网络能否通畅
    client->Port=8888; file://联接远程计算机,假如成功则
    client->Active=true;} file://发送,不然等候.
   Else file://接纳最后emod个字节.
   {pms->WriteBuffer(z,emod);
    pms->SaveToFile("d:k.bmp");
    label->Caption="successful";
    pms->Position=0;
    Image1->Picture->Bitmap->LoadFromStream(pms);}
  } file://将接纳的文件在屏幕上显示.

  以上是“C++ Builder文件肆意分割传输技术[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • win8 Could not load type System.ServiceModel.Activation.HttpModule 错误办理筹划
  • 利用Javascript实现网页水印(非图片水印)
  • 在Windows7中将U盘用BitLocker加密的操作步骤
  • rs.open和conn.execute辨别
  • 不用注册机破解Photoshop CS5 每次都需求重新输入注册码
  • CSS网页筹划25个实用小本领
  • CSS3教程:利用@font-face实现本性化字体
  • 办理Windows提醒0xc000009内存错误的办法
  • PHP的chm手册打不开怎么办
  • 关于SQL中CTE(公用表表达式)(Common Table Expression)的总结
  • mysql #1062 –Duplicate entry ''1'' for key ''PRIMARY''
  • SQL Server中利用Linkserver衔接Oracle的办法
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .