实现文件传输并不难,只需用fopen、fread、fwrite、fclose这几个函数对文件操作即可。文本文件就不说了,我们就已下图为例。

我们先来看看这个图片文件里装的是什么,我们以notpad++打开这个图片,结果如下,是一堆乱码。

我们在已二进制方式打开,方式如下:
首先打开vs的一个项目

选择一张图片


这张图片添加到源文件后,右键这张图片,选择打开方式

选择二进制编辑器

结果如下

图片文件是以二进制方式存储的,因为二进制更加节省空间,所以我们在用fopen函数时注意都要以二进制的形式读或写。

我们以客户端作发送方,服务器作接收方,先在客户端的源码目录下放一张图片123.jpg,启动服务器后在启动客户端,便在服务器的目录下产生一张与123.jpg一样的图片456.jpg。

服务器

#include <sys/socket.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <string.h>
#include <netinet/in.h>
int main()
{struct sockaddr_in sock;memset(&sock,0,sizeof(sock));sock.sin_family=AF_INET;sock.sin_port=htons(5188);sock.sin_addr.s_addr=htonl(INADDR_ANY);int sockid=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);const int on=1;setsockopt(sockid,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on));if(bind(sockid,(struct sockaddr *)&sock,sizeof(sock))<0){printf("bind\n");return 0;}if(listen(sockid,SOMAXCONN)<0){printf("listen\n");return 0;}struct sockaddr_in other_sock;socklen_t other_socklen=sizeof(other_sock);int client_sockid=accept(sockid,(struct sockaddr *)&other_sock,&other_socklen);printf("ip=%s,port=%d\n",inet_ntoa(other_sock.sin_addr),ntohs(other_sock.sin_port));FILE *fp=fopen("456.jpg","wb");char receive[4096]={0};int r_size=0;while(1){memset(receive,0,sizeof(receive));if((r_size=read(client_sockid,receive,sizeof(receive)))==0)//读取文件内容,如果客户端已全部发送,则read返回0,因为客户端发送完后就退出{printf("已成功接收\n");break;}fwrite(receive,1,r_size,fp);//读了多少数据就往文件里写多少数据}close(client_sockid);close(sockid);fclose(fp);return 0;
}

客户端

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main()
{struct sockaddr_in sock;memset(&sock,0,sizeof(sock));sock.sin_family=AF_INET;sock.sin_port=htons(5188);sock.sin_addr.s_addr=inet_addr("***");//服务器ipint sockid=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);socklen_t socklen=sizeof(sock);connect(sockid,(struct sockaddr *)&sock,socklen);FILE *fp=fopen("123.jpg","ab");char send[4096]={0};int r_size;while(!feof(fp))//判断文件指针是否到达文件末尾{r_size=fread(send,1,sizeof(send),fp);//读取文件数据write(sockid,send,r_size);,//读多少数据就发多数据给服务器memset(send,0,strlen(send));}printf("发送成功\n");close(sockid);fclose(fp);return 0;
}

用这个办法不仅可以传输文件,还可以传输视频文件,只需把文件名称更改一下即可

linux——客户端服务器文件传输相关推荐

  1. udp文件服务器,UDP客户端服务器文件传输

    我想通过UDP将数据包从客户端发送到服务器.我面临的问题是,如果最后一个数据包大小小于我们正在读取的字节数组的大小,那么来自先前数据包的冗余数据将被附加到它.我试着只将最后一个数据包的正确部分复制到一 ...

  2. java服务器客户端文件,客户端服务器文件传输Java

    这是我使用的方法,它使用套接字的输入和输出流来发送和接收文件,完成后,它将自动重新启动服务器并从客户端重新连接到服务器. 服务器代码: package app.server; import java. ...

  3. mac服务器文件传输,scp实现mac与linux服务器之间文件传输

    1.mac上传文件到linux服务器 scp 文件名 用户名@服务器ip:目标路径 如:scp -P端口号 /Users/test/testFile test@xxx.xxx.xxx.xxx:/tes ...

  4. tftpd32服务器软件在Windows与linux 下的文件传输(服务器ip 的设置问题)

    tftpd32服务器软件在Windows与linux 下的文件传输 https://blog.csdn.net/stoic163/article/details/42804421 2015年01月17 ...

  5. 本地 服务器 文件传输,本地服务器文件传输

    本地服务器文件传输 内容精选 换一换 CDM支持周期性自动将新增文件上传到OBS,不需要写代码,也不需要用户频繁手动上传即可使用OBS的海量存储能力进行文件备份.这里以CDM周期性备份FTP的文件到O ...

  6. Windows 与 Linux之间进行文件传输,文件传输工具Cuteftp的使用方法。

    文件传输工具Cuteftp的使用方法 Cuteftp是一款FTP客户端软件,只要在linux上安装.启动了FTP服务,就可以使用Cuteftp在Windows 与 Linux之间进行文件传输. 一.  ...

  7. Linux 几种文件传输方式

    本文记录linux系统中文件传输的多种方式,留作备忘.linux中文件传输的方式有ftp,scp,rsync,rz,sz等,但各个工具的功能又有所区别: FTP : FTP是文件服务器,可实现文件的上 ...

  8. 云服务器 文件 传输,云服务器文件 传输

    云服务器文件 传输 内容精选 换一换 ISO是一种光盘映像文件,通过特定的压缩方式,将大量的数据文件统一为一个后缀名为iso的映像文件.ISO文件可以理解为从光盘中复制出来的数据文件,所以ISO文件无 ...

  9. 文件传送到服务器的软件,远程服务器文件传输软件

    远程服务器文件传输软件 内容精选 换一换 已成功登录Java性能分析.待安装分析辅助软件的服务器已开启sshd.待安装分析辅助软件的服务器已安装JRE,JRE版本要求为Open JDK 11.Java ...

最新文章

  1. String是一个很普通的类 - Java那些事儿
  2. 地磅称重软件源码_【漯河衡器】浅谈地磅称重的发展趋势
  3. ES6-7 - 箭头函数的实质、箭头函数的使用场景
  4. foreach循环符合就不往下走了_柴油发电机组冷却液循环故障解决方法
  5. Jenkins 2.322 安装 自定义插件
  6. 计算机相关专业的自我评价,计算机相关专业的学生自我评价
  7. Word 2013 打开时提示Windows installer窗口,然后安装失败
  8. 计算机软件技术职业工作规划,软件技术职业规划书.docx
  9. String类型相关的题
  10. MUI框架常用代码段
  11. EOJ Monthly 2017.12 B. 在哈尔滨的寒风中(规律)
  12. smartsvn学习(-)
  13. 戏说CAD开发 最简单角度看CAD软件
  14. svg中 path标签的d属性
  15. 微信小程序--实现拨打电话功能
  16. Unity游戏制作问题整理(1)--添加按钮声音
  17. 东南蒙纳士计算机复试,2016年东南大学——蒙纳士大学双硕士学位研究生复试通知...
  18. 经典白话算法之桶排序
  19. 揭秘狂热的支付宝红包“薅羊毛”套路赚钱法
  20. collapse在PHP中是什么意思,在PHP中全面禁止SQL注进式攻击之二

热门文章

  1. 采用递归求第n位数【C#】
  2. img标签里的value获取
  3. matlab2016b ubuntu命令行安装 + matconvnet的安装
  4. JavaScript基础之Number对象和Math对象
  5. 《APUE》第6章笔记
  6. Liaoning Province--保三成功
  7. ASP注入漏洞基础教程(二)
  8. python 函数中所有print保存csv_python for循环print怎样才能输出csv呢
  9. 开发应用层的需要了解 framework层吗?---不需要!!!!
  10. php怎么使得字体滚动,滚动文字+字体特效代码(全集)