//网络编程客户端--大文件传输
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>int main(int arg,char *args[])
{if(arg<4){printf("please print three param !\n");return -1;}int port=atoi(args[2]);//create socketint st=socket(AF_INET,SOCK_STREAM,0);if(st==-1){printf("create socket failed ! error message :%s\n",strerror(errno));return -1;}//defien IP addressstruct sockaddr_in addr;//init addrmemset(&addr,0,sizeof(addr));addr.sin_family=AF_INET;addr.sin_port=htons(port);addr.sin_addr.s_addr=inet_addr(args[1]);if(connect(st,(struct sockaddr *)&addr,sizeof(addr))==-1){printf("connect failed ! error message :%s\n",strerror(errno));goto END;}//send file//define file streamFILE * pfr=NULL;//open the file in read modepfr=fopen(args[3],"r");if(pfr==NULL){printf("open the file failed !error message :%s\n",strerror(errno));goto END;}char buf[1024]={0};size_t num=0;while((num=fread(buf,sizeof(char),sizeof(buf),pfr))>0){//send part of the fileif(send(st,buf,sizeof(char)*num,0)==-1){printf("send failed !error message :%s\n",strerror(errno));break;}memset(buf,0,sizeof(buf));}fclose(pfr);END:close(st);return 0;
}

//网络编程服务端--发送大文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>int main(int arg, char *args[])
{if (arg < 2){printf("please print two param !\n");return -1;}int port = atoi(args[1]);int st = socket(AF_INET, SOCK_STREAM, 0);if (st == -1){printf("create socket failed ! error message :%s\n", strerror(errno));return -1;}//defien IP addressstruct sockaddr_in addr;memset(&addr, 0, sizeof(addr));addr.sin_family = AF_INET;addr.sin_port = htons(port);addr.sin_addr.s_addr = htonl(INADDR_ANY);//bind portif (bind(st, (struct sockaddr *) &addr, sizeof(addr)) == -1){printf("bind failed ! error message :%s\n", strerror(errno));goto END;}//listenif (listen(st, 20) == -1){printf("listen failed ! error message :%s\n", strerror(errno));goto END;}//只接收一个用户连接int clientst = 0;struct sockaddr_in client_addr;memset(&client_addr, 0, sizeof(client_addr));size_t client_addrlen = sizeof(client_addr);clientst = accept(st, (struct sockaddr *) &client_addr, &client_addrlen);if (clientst == -1){printf("accept failed ! error message :%s\n", strerror(errno));goto END;}//recv messagechar buf[1024] = { 0 };int mflag = 0;//open the file streamFILE * pfa = NULL;pfa = fopen("/home/test/2/1.dat", "a");if (pfa == NULL){printf("open the file failed ! error message :%s\n", strerror(errno));goto END;}while (1){mflag = recv(clientst, buf, sizeof(buf), 0);if (mflag == 0){printf("client is closed!\n");break;} else if (mflag == -1){printf("recv message is failed ! error message :%s\n",strerror(errno));break;}//将文件写到当前程序目录下fwrite(buf, sizeof(char), mflag, pfa);memset(buf, 0, sizeof(buf));}fclose(pfa);END: close(st);return 0;
}

.SUFFIXES:.c .o
CC=gcc
SRCS1=mclient.c
SRCS2=mserver.c
OBJS1=$(SRCS1:.c=.o)
OBJS2=$(SRCS2:.c=.o)
EXEC1=mcl
EXEC2=mserstart:$(OBJS1) $(OBJS2)$(CC) -o $(EXEC1) $(OBJS1)$(CC) -o $(EXEC2) $(OBJS2)@echo "-------ok-----------"
.c.o:$(CC) -Wall -g -o $@ -c $<
clean:rm -f $(OBJS1)rm -f $(EXEC1)rm -f $(OBJS2)rm -f $(EXEC2)

转载于:https://www.cnblogs.com/zhanggaofeng/p/5886989.html

Linux Linux程序练习十(网络编程大文件发送)相关推荐

  1. Linux Linux程序练习十一(网络编程大文件发送UDP版)

    //网络编程发送端--大文件传输(UDP) #include <stdio.h> #include <stdlib.h> #include <string.h> # ...

  2. Linux多线程、多进程、网络编程常见问题

    Linux多进程.多线程.网络编程常见问题 入门 1.GCC的工作流程? 工作流程: 预处理.编译.汇编.链接 具体流程如下: 2.gcc常用的参数选项 3.Makefile介绍 3.1.Makefi ...

  3. linux下C语言socket网络编程简例

    转自博文:http://blog.csdn.net/kikilizhm/article/details/7858405 在练习写网络编程时,该例给了我帮助,在写服务器时,我把while逻辑位置想法错了 ...

  4. Linux操作系统下C语言网络编程(全文23475字,包含了Linux系统下所有网络编程的知识点,附程序代码)

    一.简介 如今网络应用随处可见,web.http.email 等这些都是网络应用程序,他们都有着基于相同的基本编程模型,有着相似的整体逻辑结构,并且还有着相同的编程接口.我们需要了解基本的客户端-服务 ...

  5. linux应用程序接收文件,Linux应用程序学习之文件编程

    Linux应用程序学习之文件系统调用函数编程 上一篇我们了解了Linux系统下函数库的设计方法,这一章我们就来学习一下linux系统下常用的文件操作函数,在进行系统文件操作函数介绍前,我们首先要明白一 ...

  6. 【计算机网络】Linux环境中的TCP网络编程

    文章目录 前言 一.TCP Socket API 1. socket 2. bind 3. listen 4. accept 5. connect 二.封装TCPSocket 三.服务端的实现 1. ...

  7. 基于Linux下的服务器搭建(网络编程)

    这是服务器,客户端是qt编写的.看情况再写吧 注意这是头文件: #include <stdio.h> #include <string.h> #include <stdl ...

  8. 你所需要的java网络编程大总结

    好好学java java知识分享/学习教程免费分享 关注 精彩内容 你所需要的java全套视频教程 你所需要的java电子图书 你所需要的大数据视频教程 你所需要的java练习项目 如 / 梦 上个月 ...

  9. 黑马程序员_网络编程总结

    ------- android培训.java培训.期待与您交流! ---------- //以下笔记来自毕向东老师课程的总结 网络编程 网络编程的实现方式 网络编程有两种实现方式:即通过TCP协议和U ...

  10. linux tcp文件分包_Linux网络监控工具大点兵

    网络通讯Linux中最基本基本的功能之一,很多是时候我们需要获取Linux的网络信息.Linux中存在很多网络监控工具,本文就给大家介绍一下,Linux常见的网络监控工具. Netstat Netst ...

最新文章

  1. 2019与下一个十年:我们将要放弃的和将要拥抱的
  2. HDU 1271整数对
  3. PHP中抽象类与接口的应用场景
  4. Unity3DGUI:Window
  5. C++笔记-基于邻接表的BFS(宽度优先遍历)
  6. 魅族管理层换血?官方回应:信息被错误解读 黄章仍为最大股东
  7. 济南python工资一般多少-济南Go全栈区块链课程
  8. 静态网站与动态网站的区别 静态网站生成工具
  9. 【Android】12.0 第12章 Intent及其过滤器—本章示例主界面
  10. 使用procexp.exe查看线程
  11. SURF算法python实现
  12. (一)CGAL库应用:指定平面切割模型并用openGL显示该层面轮廓
  13. 腾讯云服务器IP地址绑定域名步骤
  14. rabbit MQ的rpc功能详解
  15. 山东大学密码学引论复习重点总结与期末试题
  16. 可视门铃全国产化电子元件推荐方案
  17. 你还在用Excel? 用这工具,5步完爆Excel表格
  18. 人际交往中,你的真诚相待一定会换来疏远
  19. vue文本框中禁止输入空格和使用enter键
  20. 查看虚拟机CentOS7 的 IP 地址

热门文章

  1. 水稻PHP基因,科学网—和驯化相关的水稻基因 - 闫双勇的博文
  2. 变量求和_高中生看过来:高考数列求和的方法有哪些?本文主要分享6种方法...
  3. 【POJ2155】Matrix(二维区间修改+单点查询---二维树状数组)
  4. STM32——库函数版——超声波测距模块
  5. 如何用计算机制作统计图,统计图制作_ai的环形统计图怎么制作
  6. 阿里云云计算 36 PolarDB MySQL的管理步骤
  7. 正态分布下贝叶斯决策的特例(二)
  8. 怎么看神经网络过早收敛_遗传算法的收敛性分析
  9. 387. First Unique Character in a String - String
  10. 187.重复的DNA序列