用c++开发基于tcp协议的文件上传功能

2005我正在一家游戏公司做程序员,当时一直在看《Windows网络编程》 这本书,把里面提到的每种IO模型都试了一次,强烈推荐学习网络编程的同学阅读,比 APUE 讲的更深入

    • 这是某个银行广告项目(p2p传输视频)的一部分
    • IO模型采用的阻塞模式,文件一打开就直接上传
    • 用vc 2003编译,生成win32 dll
    • 麻雀虽小五脏俱全,CSimpleSocket,CReadStream
    • dll 输出一虚类

      1. extern "C" __declspec(dllexport)
      2. ISendFileInterface * CreateSendFile()
      3. {
      4. return new CFileClient();
      5. }
    • 接口定义如下

      1. typedef struct
      2. {
      3. unsigned int    uploaded;   //已经上传的字节数
      4. bool            finished;
      5. }TransInfo,*PTransInfo;
      6. struct ISendFileInterface
      7. {
      8. virtual ~ISendFileInterface(){};
      9. //return>0:file size
      10. //return=0:zero byte file or error
      11. virtual unsigned int ChoseFile(const char *file,int type)=0;
      12. //连接服务器
      13. virtual bool Connect(const char *host,unsigned short port)=0;
      14. //阻塞调用
      15. //-1:socket 错误
      16. //0:上传完成
      17. virtual int SendFile(PTransInfo info)=0;
      18. virtual void Stop()=0;
      19. virtual const char *GetError()=0;
      20. };

用c++开发基于tcp协议的文件上传功能的更多相关文章

  1. Servlet3.0学习总结——基于Servlet3.0的文件上传

    Servlet3.0学习总结(三)——基于Servlet3.0的文件上传 在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileu ...

  2. 7 款基于 JavaScript/AJAX 的文件上传插件

    本文整理了7款基于JavaScript和AJAX的文件上传插件,这些插件基本上都能实现以下功能: 多文件上传 拖拽操作 实时上传进度 自定义上传限制 希望能为你的开发工作带来帮助. 1.  jQuer ...

  3. koa2基于stream(流)进行文件上传和下载

    阅读目录 一:上传文件(包括单个文件或多个文件上传) 二:下载文件 回到顶部 一:上传文件(包括单个文件或多个文件上传) 在之前一篇文章,我们了解到nodejs中的流的概念,也了解到了使用流的优点,具 ...

  4. Struts2文件上传(基于表单的文件上传)

    •Commons-FileUpload组件 –Commons是Apache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理HTTP文件上传的子项目   •Commons-Fil ...

  5. [原创]java WEB学习笔记49:文件上传基础,基于表单的文件上传,使用fileuoload 组件

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  6. Servlet3.0学习总结(三)——基于Servlet3.0的文件上传

    在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileupload组件,在Servlet3.0中提供了对文件上传的原生支持,我们不 ...

  7. java 网络编程之TCP通信和简单的文件上传功能

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  8. Python 基于Python实现Ftp文件上传,下载

    基于Python实现Ftp文件上传,下载   by:授客 QQ:1033553122 测试环境: Ftp客户端:Windows平台 Ftp服务器:Linux平台 Python版本:Python 2.7 ...

  9. 构建基于阿里云OSS文件上传服务

    转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50710132 <构建基于阿里云OSS文件上传服务> <构建基于OS ...

随机推荐

  1. VS QT 配置OpenGL

    在visual studio 下编译OpenGL代码出现以下错误,原因是vs没有自带opengl库,需要自己引入 无法解析的外部符号 __imp__glClear@4 无法解析的外部符号 __imp_ ...

  2. 如何配置和使用Tomcat访问日志

    配置位置在log下的server.xml,(tomcat容器) <Engine defaultHost="localhost" name="Catalina&quo ...

  3. nginx的 CPU参数worker_processes和worker_cpu_affinity使用说明

    官方说明: http://wiki.nginx.org/NginxChsHttpMainModule#worker_cpu_affinity http://wiki.nginx.org/NginxCh ...

  4. android 破解九宫格

    将目录切换到D:/adb目录下,命令如下 敲入命令 adb shell 然后回车,可以见到如下结果 再敲入命令cd /data/system然后回车, 再执行 rm gesture.key 回车,搞定 ...

  5. java学习之实现文件的复制

    package com.io; import java.io.*; import java.text.SimpleDateFormat; import java.util.Date; /** * 文件 ...

  6. [置顶] ios 360度旋转效果demo

    demo功能:用UIimageView实现360度旋转效果. demo说明:iPhone6.1 测试成功.主要代码在:FVImageSequence.m中.在touchesMoved事件中,通过替换U ...

  7. 制作Orcad的变种BOM(Variant BOM)

    通常在Orcad中画的原理图并不仅仅是用于一款产品.比如一个控制器原理图,可能相应着很多款子产品线,而这些子产品线之间的差别就是通讯口组件不同,少焊几个芯片,或者仅仅是少焊几个电阻. 可是这样交付生产 ...

  8. MFC下的日历表

    // CalenderDlg.h : header file // #if !defined(AFX_CALENDERDLG_H__8DC8F113_2A47_45B8_8266_75CB406D68 ...

  9. lib32gcc1 : Depends: gcc-4.9-base (= 4.9-20140406-0ubuntu1) but 4.9.3-0ubuntu4

    运行:sudo apt-get update 然后重新安装lib32gcc1

  10. POJ 1279 Art Gallery 半平面交求多边形核

    第一道半平面交,只会写N^2. 将每条边化作一个不等式,ax+by+c>0,所以要固定顺序,方便求解. 半平面交其实就是对一系列的不等式组进行求解可行解. 如果某点在直线右侧,说明那个点在区域内 ...