在两个文件中都定义文件头和用到的宏:

#define MAX_SIZE 10
#define ONE_PAGE 4096
struct FileHead
{char str[260];int size;
};

在客户端发送接收阶段:

    //1.发送文件头char path[260] = {0};cout<<"请输入文件路径"<<endl;cin>>path;//截取文件名char* ptemp = path;while(*ptemp++ != '\0');while(*(--ptemp) != '\\');ptemp++;fstream fs;fs.open(path,fstream::in|fstream::binary);fs.seekg(0,fstream::end);//以最后的位置为基准不偏移int nlen = fs.tellg();//取得文件大小fs.seekg(0,fstream::beg);FileHead fh;fh.size = nlen;memcpy(fh.str,ptemp,MAX_PATH);nlen = send(sockConnect ,(char*)&fh,sizeof(fh),0);//2,.如果接受到的内容为是char  szResult[MAX_SIZE] = {0};recv(sockConnect,szResult,sizeof(szResult),0);char szBuf[ONE_PAGE] ={0};if(0 == strcmp(szResult,"是")){//读文件while(!fs.eof()){fs.read(szBuf,ONE_PAGE);int len = fs.gcount();//if(len == 0 ) break;send(sockConnect,szBuf,len,0);}}//3.关闭文件流fs.close();

在服务器端,接收和发送阶段

    char str[1024] = {0};int nlen;nlen = recv(sockWaiter,(char*)&fh,sizeof(fh),0);cout<<"是否要接受文件"<<endl;cin>>str;send(sockWaiter ,str,sizeof(str),0);char szPath[MAX_SIZE] = {0};cout<<"请输入要存储的路径"<<endl;cin>>szPath;char szPathName[MAX_SIZE] = {0};sprintf(szPathName,"%s%s",szPath,fh.str);//拼接路径和文件名cout<<szPathName<<endl;fstream fs;fs.open(szPathName,fstream::out|fstream::binary|fstream::trunc);//以空文件的形式打开int FileSize = fh.size;int len;char content[ONE_PAGE] = {0};while(FileSize){len = recv(sockWaiter,content,ONE_PAGE,0);if(len > 0){fs.write(content,len);FileSize -= len;}}fs.close();

C++中使用TCP传文件相关推荐

  1. 阿里云存储OSS中设置上传文件content type

    阿里云存储OSS中设置上传文件ContentType 如果你使用浏览器上传文件,则浏览器会自动在header中设置正确地content type,然后对文件的访问会得到正确地回应. 如果采用编程的方式 ...

  2. html中异步上传文件实现示例,HTML_html中异步上传文件实现示例,复制代码代码如下: form actio - phpStudy...

    html中异步上传文件实现示例 复制代码代码如下: 复制代码代码如下: 这是html中最常见最简单的表单提交方式,但是这种方式必须会切换页面,也许有些时候我们希望可以在同一个页面与服务器进行交互,并不 ...

  3. win10向VMware中的win7传文件

    win10向VMware中的win7传文件 前言 因为安装的win7是初始版本,不能安装VMware tools,所以选择以下方法来传文件 环境 物理机:win10 虚拟机:win7 在VMware的 ...

  4. Asp.net中关于上传文件的各项基本操作

    在常见的B/S模式下企业级架构中上传文件是一个常见业务操作.在.NET 1.1版本是只有对应的客户端HTML版本的Input<Type="File">,在.NET2.0 ...

  5. html中只能上传文件word,HTML文件表单,接受Word文档(HTML file form, accept Word documents)...

    HTML文件表单,接受Word文档(HTML file form, accept Word documents) 我在这里遇到了一个奇怪的问题. (不管怎样,或者我只是忽略了一些非常简单的东西.) 我 ...

  6. Teams中阻止上传文件--详解

    之前在另外一篇文章中谈到过如何阻止向Office 365中上传文件,但是针对于Teams的文件上传没有详细介绍过. 这里首先让大家知道两个概念: Teams本身不止是一个软件在独立运行,后面包含了很多 ...

  7. elementUI中el-upload上传文件时附带额外参数传递

    公司vue项目中,文件上传这块先前一直使用的单独接口,即只是单纯的上传文件接口,上传完了拿到文件的id之后再调用文件关联绑定关系的接口,上传的代码如下即可:需要上传的url地址 以及hearders中 ...

  8. postman中springboot上传文件Missing initial multi part boundary

    如果在postman中设置了Context-type为multipart/form-data以及file设置,如下图: 而我的调用的上传方法仅仅只是用了@RequestMapping("/x ...

  9. uniapp中的上传文件及打开文件

    一.先选择文件 let that = this; uni.chooseMessageFile({count: 1,success: res => {console.log(res);//name ...

最新文章

  1. 填问卷赢280元SaaS峰会门票 与Salesforce、Zenefits现场交流!
  2. 如何利用 AI 对抗疫情?
  3. VS2005与VSOrcasExpress对LINQ各有所属~
  4. h5engine造轮子
  5. 对Docker常用命令的整理
  6. SilverLight中的数据绑定
  7. schedule调用相关整理
  8. java后根次序非递归输出_求根结点到每个叶子节点的逆序列【后序遍历非递归的应用】...
  9. 普元EOS在运算逻辑里面调用HttpServletRequest ,HttpServletResponse
  10. STARK论文记录(2021CVPR):Learning Spatio-Temporal Transformer for Visual Tracking
  11. 如何用计算机录视频,怎么用电脑录制视频
  12. 在线 excel 产品技术调研
  13. android lint 安全检测,Android Lint检查
  14. 北京房价当日报20141013
  15. CUDA与cuDNN安装教程(超详细)
  16. PCB设计之电源模块电路(LDO电源)设计
  17. vue组件keep-alive知识详解
  18. 阿里云服务器搭建Golang运行环境
  19. 「得印度者,得天下」聊聊你不知道的印度在线视频江湖
  20. uniapp 微信小程序最简单的生成图片示例

热门文章

  1. curl命令java_让 Bug 无处藏身,Java 线上问题排查思路、常用工具
  2. 不等号属于不等式吗_初中数学——中考知识3【方程与不等式(基础)】
  3. spring java配置_Spring基于java的配置
  4. python ui自动化测试框架_基于python语言下的UI自动化测试框架搭建(一)
  5. ad20如何画出pcb板大小_多层pcb板是如何抄板的?
  6. 硬核项目 | 用Arduino做一个神奇的悬浮灯!
  7. 只会用单片机点灯,很丢人吗?
  8. php常见问题及其解决方案,PHP开源开发框架ZendFramework使用中常见问题说明及解决方案...
  9. java是解释型编程语言_程序设计语言可以分为两类:编译型语言和解释型语言...
  10. solr7.4.0+mysql+solrj(简而优美)