C++中使用TCP传文件
在两个文件中都定义文件头和用到的宏:
#define MAX_SIZE 10
#define ONE_PAGE 4096
struct FileHead
{
char str[];
int size;
};
在客户端发送接收阶段:
//1.发送文件头
char path[] = {};
cout<<"请输入文件路径"<<endl;
cin>>path;
//截取文件名
char* ptemp = path;
while(*ptemp++ != '\0');
while(*(--ptemp) != '\\');
ptemp++; fstream fs;
fs.open(path,fstream::in|fstream::binary);
fs.seekg(,fstream::end);//以最后的位置为基准不偏移
int nlen = fs.tellg();//取得文件大小
fs.seekg(,fstream::beg); FileHead fh;
fh.size = nlen;
memcpy(fh.str,ptemp,MAX_PATH);
nlen = send(sockConnect ,(char*)&fh,sizeof(fh),);
//2,.如果接受到的内容为是
char szResult[MAX_SIZE] = {};
recv(sockConnect,szResult,sizeof(szResult),);
char szBuf[ONE_PAGE] ={};
if( == strcmp(szResult,"是"))
{
//读文件
while(!fs.eof())
{
fs.read(szBuf,ONE_PAGE);
int len = fs.gcount();
//if(len == 0 ) break;
send(sockConnect,szBuf,len,);
}
} //3.关闭文件流
fs.close();
在服务器端,接收和发送阶段
char str[] = {};
int nlen;
nlen = recv(sockWaiter,(char*)&fh,sizeof(fh),);
cout<<"是否要接受文件"<<endl;
cin>>str;
send(sockWaiter ,str,sizeof(str),);
char szPath[MAX_SIZE] = {};
cout<<"请输入要存储的路径"<<endl;
cin>>szPath;
char szPathName[MAX_SIZE] = {};
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] = {};
while(FileSize)
{
len = recv(sockWaiter,content,ONE_PAGE,);
if(len > )
{
fs.write(content,len);
FileSize -= len;
}
}
fs.close();
C++中使用TCP传文件的更多相关文章
- Android应用开发中webview上传文件的几种思路
1. 常规方法,重写WebChromeClient 的 openFileChooser 方法 private class MyWebChromeClient extends WebChromeClie ...
- Juploader 1.0 谷歌(chrome)浏览器中成功上传文件后返回信息异常
在项目中使用了Juploader 1.0无刷新上传文件的js组件,在IE8以上没有问题,代码如下: function InitialUploadDirectly(OnUploadFunc, butto ...
- 定制FileField中的上传文件名称
FileField中的upload_to属性可以设定上传文件的存储目录和名称,它可以是个字符串,也可以是个callable,比如一个方法. 当upload_to的值设为一个方法时,就可以对上传文件的名 ...
- ASP.Net在web.config中设置上传文件的大小方法
修改Webcong文件:<system.web><httpRuntime maxRequestLength="40960" //即40MB,1KB=1024u ...
- 106.TCP传文件
客户端 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include < ...
- SpringMvc (注解)中的上传文件
第一步:导入commons-fileupload-1.3.1.jar 和commons-io-2.2.jar 架包 第二步:在applicationContext.xml中 配置 <bean i ...
- 在asp.net 中怎样上传文件夹
以ASP.NET Core WebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API ,包括文件的上传和下载. 准备文件上传的API #region 文件上传 ...
- openstack 制作镜像以及windows向Linux中通过xshell传文件
慢慢的也要把openstack一些相关的笔记整理上来了 之前由于主要是在看horizon 实验室搭建的openstack平台并没有怎么实际的用起来,前几天别的同学要用来测试大数据的相关服务,才把这些内 ...
- 利用Xshell5从本机上向Linux(虚拟机中)上传文件
Xmanager Enterprise 5云盘分享: http://pan.baidu.com/s/1jIkiQNW 1. 用ifconfig命令查看Linux的IP地址 2. 由于没有IP,所以我 ...
随机推荐
- C#基础知识梳理系列
1. 这个系列深入的从IL层面谈了C#各种基本知识的本质,十分值得学习: http://www.cnblogs.com/solan/category/398748.html
- 15 分钟学会 Eclipse GMF
背景 坦白说:过去在 Eclipse 里使用 Graphical Editor Framework(GEF)创建图形化编辑器 既慢又痛苦.这个过程包括理解复杂的框架和大量的冗余代码.但也说明 GEF ...
- 目标跟踪之ECO:Efficient Convolution Operators for Tracking
一. 相关滤波算法总结 作者首先分析了 影响相关滤波算法效率 和 导致过拟合 的几个原因: 1)Model Size (模型大小) 包括两个方面: - 模型层数,对应多分辨率 Sample,比如多层 ...
- Django应用部署
前言 Apachewsgi 环境搭建 安装Apache 安装mod_wsgi 添加djangowsgi文件 配置etcapache2httpdconf wsgipy配置 跑起来吧 uWSGI 环境搭建 ...
- JavaScript 中 this:
在绑定事件时,this指定的是被绑定的那个html元素,比如: 结果: press里的this指的就是canvas.
- ResNet网络结构
MSRA(微软亚洲研究院)何凯明团队的深度残差网络(Deep Residual Network)在2015年的ImageNet上取得冠军,该网络简称为ResNet(由算法Residual命名),层数达 ...
- 21天学通C++_Day3_Part1
今天奔跑吧兄弟来杭电了,决定不去看,宅在科协继续啃(反正去了也看不到咯),继续继续,今天白天没课,希望可以更两个. 0.C风格字符串 在数组中间把某个字符替换成‘\0’并不会改变数组的长度,但是显示时 ...
- bzoj 3598 方伯伯的商场之旅
Written with StackEdit. Description 方伯伯有一天去参加一个商场举办的游戏.商场派了一些工作人员排成一行.每个人面前有几堆石子.说来也巧,位置在 \(i\) 的人面前 ...
- 模糊聚类算法(FCM)
伴随着模糊集理论的形成.发展和深化,RusPini率先提出模糊划分的概念.以此为起点和基础,模糊聚类理论和方法迅速蓬勃发展起来.针对不同的应用,人们提出了很多模糊聚类算法,比较典型的有基于相似性关系和 ...
- 剑指offer-第五章优化时间和空间效率(两个链表的第一个公共节点)
思路1:要求的是两个链表的第一个公共节点,首先想到的是用栈来存放两个链表,然后依次从栈中抛出,直到最后一个相同的节点为止.但是要用到两个栈,空间复杂度为O(n): 思路2:从头到尾分别遍历两个链表得到 ...