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

#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传文件的更多相关文章

  1. Android应用开发中webview上传文件的几种思路

    1. 常规方法,重写WebChromeClient 的 openFileChooser 方法 private class MyWebChromeClient extends WebChromeClie ...

  2. Juploader 1.0 谷歌(chrome)浏览器中成功上传文件后返回信息异常

    在项目中使用了Juploader 1.0无刷新上传文件的js组件,在IE8以上没有问题,代码如下: function InitialUploadDirectly(OnUploadFunc, butto ...

  3. 定制FileField中的上传文件名称

    FileField中的upload_to属性可以设定上传文件的存储目录和名称,它可以是个字符串,也可以是个callable,比如一个方法. 当upload_to的值设为一个方法时,就可以对上传文件的名 ...

  4. ASP.Net在web.config中设置上传文件的大小方法

    修改Webcong文件:<system.web><httpRuntime maxRequestLength="40960"   //即40MB,1KB=1024u ...

  5. 106.TCP传文件

    客户端 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include < ...

  6. SpringMvc (注解)中的上传文件

    第一步:导入commons-fileupload-1.3.1.jar 和commons-io-2.2.jar 架包 第二步:在applicationContext.xml中 配置 <bean i ...

  7. 在asp.net 中怎样上传文件夹

    以ASP.NET Core WebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API ,包括文件的上传和下载. 准备文件上传的API #region 文件上传  ...

  8. openstack 制作镜像以及windows向Linux中通过xshell传文件

    慢慢的也要把openstack一些相关的笔记整理上来了 之前由于主要是在看horizon 实验室搭建的openstack平台并没有怎么实际的用起来,前几天别的同学要用来测试大数据的相关服务,才把这些内 ...

  9. 利用Xshell5从本机上向Linux(虚拟机中)上传文件

    Xmanager Enterprise 5云盘分享:  http://pan.baidu.com/s/1jIkiQNW 1. 用ifconfig命令查看Linux的IP地址 2. 由于没有IP,所以我 ...

随机推荐

  1. 一个高性能RPC框架的连接管理

    既然说连接,先对EpollServer的连接管理做个介绍吧.客户端与服务器一次conn,被封装成为Connection类在服务器进行管理. 服务器连接有三种类型,分别为: enum EnumConne ...

  2. MySQL install and setting

    Tomorrow is the deadline of DATABASE, I am very nervous because of my project. Today is first day th ...

  3. 图解Fiddler如何抓手机APP数据包过滤抓取

    使用fidder抓取浏览器的包相信不是问题,那么使用fidder 抓取app的数据包呢??? 于是,找了一篇博客来学习一下,可以参考一下,根据自己的需求来实现. 在网上自己学习,然后整理了我所用到的, ...

  4. LeetCode Degree of an Array

    原题链接在这里:https://leetcode.com/problems/degree-of-an-array/description/ 题目: Given a non-empty array of ...

  5. 简述负载均衡和 CDN 技术

    曾经见到知乎上有人问“为什么像facebook这类的网站需要上千个工程师维护?”,下面的回答多种多样,但总结起来就是:一个高性能的web系统需要从无数个角度去考虑他,大到服务器的布局,小到软件中某个文 ...

  6. art-template前端高性能模板

    template.js资源 /*!art-template - Template Engine | http://aui.github.com/artTemplate/*/!function(){fu ...

  7. Jmeter ----关于上传图片接口

    转自:http://www.cnblogs.com/linglingyuese/p/4514808.html 需求 1 2 3 4 5 6 7 8 9 post上传   Request: { &quo ...

  8. onItemLongClick事件的监听

    首先需要implements public class MainActivity extends AppCompatActivity implements OnItemLongClickListene ...

  9. C 游戏所要看的书

    C 游戏所要看的书 1.C++primer中文版第4版     经典啊2.C++标准程序库自修教程与参考手册 3.Windows程序设计第5版 4.MFC windows程序设计第2版中文版 5.VC ...

  10. 【转】Jmeter + DadBoby 安装使用

    一直接触LR比较多,这阵子突然想了解一下开源的性能测试工具,无意中接触到了Jmeter+Badboy,这两款工具对于想进行性能测试,但又对LR高额的商业费用望而止步的小公司可谓是再适合不过了. 自已小 ...