分段传输的关键代码

struct FILEINFO
{
 int fileLength;//文件长度
 char fileName[100];//文件名
};

服务器:

CFileDialog fileDialog(TRUE);//选择文件
 if (fileDialog.DoModal()==IDOK)
 {
       CString filename = fileDialog.GetPathName();//文件路径
        CString name = fileDialog.GetFileName();//文件名字
         
  //发送文件
  CFile file;
  if(file.Open(filename,CFile::modeReadWrite|CFile::typeBinary))
  {//打开文件
  
   FILEINFO myFileInfo;//文件结构
   int length = file.GetLength();//获取文件的长度
   m_CtrlProgressSend.SetRange32(0,length);//设置进度条大小
   m_CtrlProgressSend.SetPos(0);
   myFileInfo.fileLength = length;//赋值文件长度
   strcpy(myFileInfo.fileName,name.GetBuffer(name.GetLength()));//拷贝文件名
   name.ReleaseBuffer();//释放buffer
    
   int iBufSize = 1024*5;//设置文件缓冲区长度
   int iSize = iBufSize ; //一次读取的长度
   LPBYTE pBuf=new BYTE[iBufSize];//定义缓冲区
   
   m_sockClient.Send(&myFileInfo,sizeof(myFileInfo));//发送文件头信息
   //发送文件
   int iNnmByte;
   UINT uiTotal = 0 ;
   while (uiTotal<length)
   {
    if (length-uiTotal < iBufSize)//如果发送小于1024*5 ,则发送剩余那些....
         iSize = length-uiTotal;
    iSize = file.Read(pBuf,iSize);//读取文件到缓冲区
    iNnmByte = m_sockClient.Send(pBuf,iSize);//发送剩下iSize-iCount的文件
    uiTotal += iNnmByte;//uiTotal总发送量
    m_CtrlProgressSend.SetPos(uiTotal);
   }
  }
  m_info.ReplaceSel("发送文件完毕\r\n");
  file.Close();
 }
 m_CtrlProgressSend.SetPos(0);
}

  

客户端

FILEINFO myFileInfo;
m_client.Receive(&myFileInfo,sizeof(myFileInfo));//接受文件信息
m_progress.SetRange32(0,myFileInfo.fileLength);//设置进度
CString str;
str.Format(myFileInfo.fileName);//文件名字
CFile file;
if (file.Open(str,CFile::modeCreate|CFile::modeWrite))
{
    UINT uiLength;
    uiLength = myFileInfo.fileLength ;//文件长度
     
    int iBufSize = 1024*5;
    int iSize = iBufSize ;
    LPBYTE pBuf = new BYTE[iBufSize];
    int iNumByte;
    UINT uiTotal = 0 ;
     
     
    while (uiTotal < uiLength)
    {
        if (uiLength-uiTotal<iBufSize)
            iSize = uiLength - uiTotal ;
         
        iNumByte = m_client.Receive(pBuf,iSize);
        file.Write(pBuf,iNumByte);//写入文件
        uiTotal+=iNumByte;
        m_progress.SetPos(uiTotal);
         
         
    }
     
    if (pBuf)
    {
        delete[]  pBuf;
        pBuf = NULL;
    }
}
file.Close();
m_info.ReplaceSel("接受文件成功\r\n");
m_progress.SetPos(0);

  

CSocket文件传输 分段传输的关键代码相关推荐

  1. python twisted框架_Python 基于Twisted框架的文件夹网络传输源码

    由于文件夹可能有多层目录,因此需要对其进行递归遍历. 本文采取了简单的协议定制,定义了五条命令,指令Head如下: Sync:标识开始同步文件夹 End:标识结束同步 File:标识传输的文件名(相对 ...

  2. linux telnet 传文件命令,telnet 传输文件

    用python创建个临时服务器,发送文件供telnet访问 import socket import base64 port = 10005 filename = 'libcrypto.so.1.0. ...

  3. Dubbo系统里面MultipartFile文件传输问题Dubbo文件上传/传输服务

    今天遇到一个问题,在Controller 层里面,直接使用MultipartFile 来接收上传的图片,遇到几个坑. 一.在spring配置文件里面配置文件上传 <!--文件上传-->&l ...

  4. 局域网文件文本在线传输助手

    局域网文件文本在线传输助手 具体实现代码链接 下面我将详细记录,我在完成该项目涉及的具体问题的具体分析实现. 要进行局域网通信首先要做的就是客户端和局域网建立链接. 链接过程 服务器端是无法知道都有哪 ...

  5. Java 文件传输小工具,网络传输文件,内网传输

    文件传输小工具,网络传输文件,内网传输 换了一台电脑,想把一台电脑的资料放到另一太电脑上,由于没有太大的U盘就动手用Java写了个小工具.有需要的朋友下载使用! 运行环境 运行环境需要安装JDK,并配 ...

  6. 鲁班编程语言 文件读写,网络传输及解释器使用指南(转)

    鲁班编程语言 文件读写,网络传输及解释器使用指南(转) http://project.soft114.com/lubankit/index_chinese.html 9. 输入输出对象类型及部件 Me ...

  7. linux tar打包大文件并分割传输另一台linux服务器

    场景 将linux服务器A中的数据文件迁移到linux服务器B,当文件很大的之后,压缩直接传输会出现传输很久,且中间一段暂停,又得重新上传.这时候需要可以将压缩的文件的分割传输然后解压合并. linu ...

  8. linux命令——scp 两台linux机器间文件或目录传输

    不同的Linux之间copy文件常用有3种方法: 第一种:ftp,也就是其中一台Linux安装ftpServer,这样可以另外一台使用ftp的client程序来进行文件的copy. 第二种:采用sam ...

  9. linux与window文件通过串口传输方法(zmod传输方法)

    我们在调试linux产品时,有的产品没有网口,只有串口.这时nfs,tfp都用不了.只能用串口来传输文件. 把windows上文件通过串口传输到开发板上. 开发板和电脑通过串口连接. 2.使用Moba ...

最新文章

  1. 巴奴与海底捞的战争背后,“单品即品牌”战略到底香不香?
  2. pg数据库开启远程连接_Postgresql开启远程访问的步骤全纪录
  3. 应用软件更新提醒单页HTML网站源码
  4. undefined reference to `dlclose‘问题解决方法
  5. Windows10安装Matlab 2018b教程
  6. 利用html+javascript开发桌面软件
  7. 卧槽!AI 质检竟然还能这么玩???
  8. Java笔记 - 黑马程序员_03(继承,修饰符,多态,抽象类,接口,内部类)
  9. 携程Java后台开发面经
  10. 何恺明 matlab,[论文复现]何恺明博士CVPR2009去雾算法(1)
  11. 【趣味案例】用Python来做一个屏幕录制工具
  12. Molecular weight相对分子质量
  13. FPGA设计经验之图像处理
  14. 计算机打印unknow,系统安装打印机驱动提示unknown device解决方法
  15. 关于获取微信小程序码的“47001”错误码的坑
  16. (更新时间)2021年6月2日 商城高并发秒杀系统(.NET Core版) 20-性能优化-系统配置
  17. 青岛理工大学计算机基础考试,学校召开2019年下半年全国计算机等级考试考务协调会...
  18. 1412: [ZJOI2009]狼和羊的故事 最小割
  19. 西软点菜系统服务器设置,西软酒店管理系统软件客户端安装使用教程.docx
  20. 真的了解Cookie吗 - Cookie详解

热门文章

  1. 数据库-优化-MYSQL的执行顺序
  2. 字典-字典的循环遍历
  3. 单例设计模式-饿汉式
  4. ArrayBlockingQueue源码
  5. mysql主从同步测试_mysql 主从同步测试
  6. Xshell、Xftp入门使用
  7. YOLO Object Detection with OpenCV
  8. mongo数据库单节点搭建
  9. 一段JAVA签名算法的PHP改写
  10. 最近任务-2012.05.14