C++中使用TCP传文件
在两个文件中都定义文件头和用到的宏:
#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传文件相关推荐
- 阿里云存储OSS中设置上传文件content type
阿里云存储OSS中设置上传文件ContentType 如果你使用浏览器上传文件,则浏览器会自动在header中设置正确地content type,然后对文件的访问会得到正确地回应. 如果采用编程的方式 ...
- html中异步上传文件实现示例,HTML_html中异步上传文件实现示例,复制代码代码如下: form actio - phpStudy...
html中异步上传文件实现示例 复制代码代码如下: 复制代码代码如下: 这是html中最常见最简单的表单提交方式,但是这种方式必须会切换页面,也许有些时候我们希望可以在同一个页面与服务器进行交互,并不 ...
- win10向VMware中的win7传文件
win10向VMware中的win7传文件 前言 因为安装的win7是初始版本,不能安装VMware tools,所以选择以下方法来传文件 环境 物理机:win10 虚拟机:win7 在VMware的 ...
- Asp.net中关于上传文件的各项基本操作
在常见的B/S模式下企业级架构中上传文件是一个常见业务操作.在.NET 1.1版本是只有对应的客户端HTML版本的Input<Type="File">,在.NET2.0 ...
- html中只能上传文件word,HTML文件表单,接受Word文档(HTML file form, accept Word documents)...
HTML文件表单,接受Word文档(HTML file form, accept Word documents) 我在这里遇到了一个奇怪的问题. (不管怎样,或者我只是忽略了一些非常简单的东西.) 我 ...
- Teams中阻止上传文件--详解
之前在另外一篇文章中谈到过如何阻止向Office 365中上传文件,但是针对于Teams的文件上传没有详细介绍过. 这里首先让大家知道两个概念: Teams本身不止是一个软件在独立运行,后面包含了很多 ...
- elementUI中el-upload上传文件时附带额外参数传递
公司vue项目中,文件上传这块先前一直使用的单独接口,即只是单纯的上传文件接口,上传完了拿到文件的id之后再调用文件关联绑定关系的接口,上传的代码如下即可:需要上传的url地址 以及hearders中 ...
- postman中springboot上传文件Missing initial multi part boundary
如果在postman中设置了Context-type为multipart/form-data以及file设置,如下图: 而我的调用的上传方法仅仅只是用了@RequestMapping("/x ...
- uniapp中的上传文件及打开文件
一.先选择文件 let that = this; uni.chooseMessageFile({count: 1,success: res => {console.log(res);//name ...
最新文章
- 填问卷赢280元SaaS峰会门票 与Salesforce、Zenefits现场交流!
- 如何利用 AI 对抗疫情?
- VS2005与VSOrcasExpress对LINQ各有所属~
- h5engine造轮子
- 对Docker常用命令的整理
- SilverLight中的数据绑定
- schedule调用相关整理
- java后根次序非递归输出_求根结点到每个叶子节点的逆序列【后序遍历非递归的应用】...
- 普元EOS在运算逻辑里面调用HttpServletRequest ,HttpServletResponse
- STARK论文记录(2021CVPR):Learning Spatio-Temporal Transformer for Visual Tracking
- 如何用计算机录视频,怎么用电脑录制视频
- 在线 excel 产品技术调研
- android lint 安全检测,Android Lint检查
- 北京房价当日报20141013
- CUDA与cuDNN安装教程(超详细)
- PCB设计之电源模块电路(LDO电源)设计
- vue组件keep-alive知识详解
- 阿里云服务器搭建Golang运行环境
- 「得印度者,得天下」聊聊你不知道的印度在线视频江湖
- uniapp 微信小程序最简单的生成图片示例
热门文章
- curl命令java_让 Bug 无处藏身,Java 线上问题排查思路、常用工具
- 不等号属于不等式吗_初中数学——中考知识3【方程与不等式(基础)】
- spring java配置_Spring基于java的配置
- python ui自动化测试框架_基于python语言下的UI自动化测试框架搭建(一)
- ad20如何画出pcb板大小_多层pcb板是如何抄板的?
- 硬核项目 | 用Arduino做一个神奇的悬浮灯!
- 只会用单片机点灯,很丢人吗?
- php常见问题及其解决方案,PHP开源开发框架ZendFramework使用中常见问题说明及解决方案...
- java是解释型编程语言_程序设计语言可以分为两类:编译型语言和解释型语言...
- solr7.4.0+mysql+solrj(简而优美)