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

#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. 采用Spring管理Bean和依赖注入

    1. 实例化spring容器和从容器获取Bean对象 实例化Spring容器常用的两种方式: 方法一: 在类路径下寻找配置文件来实例化容器 [推荐使用] ApplicationContext ctx ...

  2. Visual Studio编辑类模板的位置

    VS的版本一直在不断更新,每个版本的安装目录都是有一点变化,所以模板文件的位置也是不一样的,下面是从StackOverflow看到的一个大合集,转发记录一下: Extract, edit and re ...

  3. mysql 视图,触发器,存储

    一.视图 概念:其实就是一个临时表. 视图是一个虚拟表(非真实存在的),其本质是[根据SQL语句获取动态的数据库,并为其命名],用户使用时只需使用[名称]即可获取结果集.就可以当做表来使用. # 1. ...

  4. 在zxing开源项目里,camera.setDisplayOrientation(90)出现错误

    [错误提示]  setDisplayOrientation(int)未定义 [错误原因]  sdk版本过低,这个方法在Android2.2之后才有 [解决方法]  直接在project.propert ...

  5. PS基础教程[6]如何快速制作一寸照片

    一寸照片使我们经常会用到的,很多的证件照都是使用一寸的照片作为存档的.写这个经验也是因为刚刚有网友求助做一寸照片,所以就顺便写个经验.废话不多说了,进入正题,PS基础教程之快速制作一寸的照片. 制作方 ...

  6. Yet another A + B

    time limit per test 0.25 s memory limit per test 64 MB input standard input output standard output Y ...

  7. 在Git远程管理项目

    新建repository 本地目录下,在命令行里新建一个代码仓库(repository) 里面只有一个README.md 命令如下: touch README.md        git init 初 ...

  8. 区域存储网络(SAN)与 网络直接存储(NAS)

    随着互联网及网络应用的飞速发展,数据信息存储系统所需处理的数据类型也呈爆炸性增长,这使数据信息存储系统面临前所未有的挑战.附加式网络存储装置(Network Attached Storage,缩写为N ...

  9. js判断客户端是pc还是手机

    function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = ["Android", " ...

  10. selenium - 截取页面图片和截取某个元素的图

    1.截取页面图片并保存 在测试过程中,是有必要截图,特别是遇到错误的时候进行截图. # coding:utf-8 from time import sleep from PIL import Imag ...