服务器端

构建进程池实现高并发,高效率

不需要重复创建子进程分配任务

子进程有任务执行

无任务阻塞

3种文件传输技术:

小火车协议

大货车

以及sendfile的0拷贝技术

框架:

  1. 头文件

#include <23c.h>

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/time.h>
#include <dirent.h>
#include <sys/stat.h>
#include <unistd.h>
#include <pwd.h>
#include <grp.h>
#include <fcntl.h>
#include <sys/wait.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/sem.h>
#include <sys/msg.h>
#include <sys/select.h>
#include <time.h>
#include <syslog.h>
#define __USE_POSIX
#define __USE_XOPEN_EXTENDED
#include <signal.h>
typedef __sighandler_t sighandler_t;
#define __USE_UNIX98
#include <pthread.h>
#include <errno.h>
#include <stdarg.h>#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netinet/ip.h>
#include <netdb.h>
#include <strings.h>
#include <sys/epoll.h>#include <sys/mman.h>
#include <sys/sendfile.h>#define ARGS_CHECK(argc, num)                \{                                        \if (argc != num)                     \{                                    \fprintf(stderr, "Args error\n"); \return -1;                       \}                                    \}
#define ERROR_CHECK(ret, num, info) \{                               \if (ret == num)             \{                           \perror(info);           \return -1;              \}                           \}#define THREAD_ERROR_CHECK(ret, info)                            \{                                                            \{                                                        \if (ret != 0)                                        \{                                                    \fprintf(stderr, "%s:%s\n", info, strerror(ret)); \}                                                    \}                                                        \}

#include "head.h"

#include <23c.h>
//在头文件下定义各种数据结构
//workerdata_t
enum workerStatus{FREE,BUSY
};
typedef struct workerdata_s
{pid_t pid;int ststus;int pipefd;
}workerdata_t;//小火车结构体
typedef struct train_s
{int length;char data[1000];
}train_t;
//函数体
int makeChild(workerdata_t*workerDataArr,int workerNum);
int tcpInit(const char *ip, const char *port, int *psockfd);
int sendfd(int Wpipefd,int fdtosend);
int recvfd(int Rpipefd,int *pfdtosend);
int epollCre();//return 一个监听集合epfd
int epollAdd(int epfd,int fd);//往epoll监听加入fd进行监听
int epollDel(int epfd,int fd);//从epoll监听删除fd解除监听//小火车
int transFile_Small(int netfd);
int transFile_Big(int netfd);//0拷贝技术 sendfile
int zeroCopySend(int netfd);
  1. Makefile文件

srcs:=server/worker.c server/main.c server/worker.c server/tcpInit.c server/sendfd.c \
server/recvfd.c server/epoll.c server/transFile.c #目前的服务器源码文件
objs:=$(srcs:%.c=%.o)
all:client/client server/server
client/client:client/client.cgcc $^ -o $@ -lpthread -g
server/server:$(objs) #先编译成.o文件 再链接成可执行程序gcc $^ -o $@ -lpthread -

简要cloud云下载服务器框架相关推荐

  1. 华为网页手机云服务器,华为Cloud 云服务

    手机上的云服务现在越来越多,这些功能也逐渐被大家所了解和使用.在去年年中,华为作为国产厂商最早发布了其云服务Cloud+.到现在,支持这项服务的终端都已经陆续上市.华为的Cloud+服务有什么样的特点 ...

  2. armbian宝塔_斐讯N1+Armbian+宝塔+Apache+Mysql+PHP+cloudreve+aria2实现云存储+离线下载服务器...

    看到很多人提到不建议在N1的armbian中安装宝塔,因为无法安装WEB环保,于是写一个简单的内容来给大家提供一些灵感. 写在前面: 因为宝塔环境安装Arm系统的兼容性并不好,所以需要做的工作会稍多一 ...

  3. 阿里云linux服务器下安装scrapy2.4.1框架

    阿里云linux服务器下安装scrapy2.4.1框架 1.下载scrapy框架: wget https://files.pythonhosted.org/packages/75/0a/2434fb7 ...

  4. 斐讯N1+ARMBIAN+宝塔+APACHE+MYSQL+PHP+CLOUDREVE+ARIA2实现云存储+离线下载服务器

    漫步云端服务器 http://chdong.top/bbs/ http://www.chdong.top/ 看到很多人提到不建议在N1的armbian中安装宝塔,因为无法安装WEB环保,于是写一个简单 ...

  5. IOS开发基础之使用AFNetworking框架下载服务器资源图片

    IOS开发基础之使用AFNetworking框架下载服务器资源图片 info.plist加入这句 <key>NSAppTransportSecurity</key> <d ...

  6. 基于阿里云ECS,Ubuntu系统搭建离线下载服务器

    基于阿里云ECS,Ubuntu系统搭建离线下载服务器 很开心能参加本次阿里云训练营,使用的ECS是阿里云,ubuntu系统 1.了解什么是CCAA CCAA 是服务器离线下载解决⽅案包,组件包含了Ar ...

  7. python自动化测试教程百度云盘_Python接口自动化测试框架实战视频教程百度云下载...

    主流的Fiddler.Requests.Unittest.Mock等接口测试工具/框架应用 进阶自动化框架设计开发 课程目录: 1-1 接口自动化测试从基础到框架-导学 1-2 接口基础知识回顾 1- ...

  8. C#实现自动下载阿里云数据库RDS,附转储阿里云OSS服务器

    本文属于个人原创作品.个人总结,谢绝转载.抄袭.如果您有疑问或者希望沟通交流,可以联系QQ:865562060. 一.简述 现阶段服务器.数据库上云的选择越来越多,但不是说服务器和数据库上云管理之后就 ...

  9. Oneindex搭建自己的5T云盘+离线下载服务器

    Oneindex搭建自己的5T云盘+离线下载服务器 想起自己有一个onedrive 5T的账号,再加上百度云限速,aria2可以突破百度云的限速,于是动手建了集aria2+ariaNg+oneinde ...

  10. 阿里云进阶课程四——轻轻松松自建云端下载服务器

    基于阿里云服务器打造离线下载服务器 准备工作 配置阿里云服务器镜像 终端工具安装 安装CCAA 配置AriaNg 使用AriaNg下载文件 结语 准备工作 今天是阿里云进阶课程的第四节,任务是基于阿里 ...

最新文章

  1. python re模块_Python re模块
  2. internal error:failed to get path of 64-bit Program Files directory
  3. Yii的 Yii::$app-end()
  4. 《C#高级编程》中文第七版 读书笔记(目录阐述)
  5. SAP 电商云 Spartacus UI 从 shipping address 到 shipping method 的 HTTP 请求设计
  6. C++11中的std::function
  7. Java 字符串与整数之间的互相转换
  8. Nmap绕过防火墙脚本的使用
  9. html5吻胸小游戏,html5气球大战小游戏代码
  10. mongodb WT_ERROR: non-specific WiredTiger error
  11. 计算机启动硬盘自检,启动时硬盘自检?这样处理就没事了
  12. 关于微信支付电商平台二清解决方案
  13. 【ROS2原理11】C++编程的要点
  14. nexus私服传项目-401 Unauthorized
  15. 中触媒科创板上市:市值74亿 为李进与刘颐静夫妻店
  16. 二手苹果手机哪个性价比高?
  17. OpenOCD-JTAG调试
  18. rua出300道四则运算题
  19. 快速入门Mybatis初学笔记(二)
  20. Virtual Tablet Mode Switch

热门文章

  1. SECTION 29 多线程编程
  2. 航班编程代码c语言,《c语言编写航班查询代码》.doc
  3. Edge Impulse使用教程之训练模型(接上文)
  4. 广告学和计算机共通,本科生广告学专业个人职业规划书范文_大风车网
  5. IC验证面试常问题88道
  6. Lombok的@Data重写的toString特性 慎重
  7. 基于Springboot的网上租房(房屋租赁)网站(有报告)。Javaee项目,springboot项目。
  8. 用C++ Builder编程监控打印机队列状态
  9. Spring框架入门(一)简介及三种基本注入方式实例
  10. WELL 全球推广跨越五亿门槛