Miniftp 项目学习笔记(二) 系统框架搭建

一、框架简介

  • common 模块 <头文件定义>
  • sysutil 模块 <公有工具定义>
  • miniftp 模块 <检测是否root启动,主进程完成客户端的连接,以及子进程的创建, 开启会话>
  • session 模块 <会话结构的定义,实现会话函数,创建子进程,区分出ftp进程和nobody进程,实现ftp与nobody之间的通讯连接,更改nobody进程getpwnam>
  • ftpproto 模块 <ftp进程>
  • priparent 模块 <nobody进程>
  • Makefile 文件

二、各个模块代码框架

1、common 模块 <头文件定义>

#ifndef _COMMON_H_
#define _COMMON_H_

#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <pwd.h>

#include <errno.h>

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#include <netdb.h>

//ERR_EXIT函数宏定义
#define ERR_EXIT(m) \
	do{ \
	perror(m);\
	exit(EXIT_FAILURE);\
	}while(0);

#define MAX_COMMAND_LINE 1024	//获取的最大命令
#define MAX_COMMAND 32		//获取的最大命令数
#define MAX_ARG 1024		//获取的最大参数

#endif /* _COMMOM_H_ */

2、sysutil 模块 <公有工具定义>

① sysutil.h 头文件

#ifndef _SYSUTIL_H_
#define _SYSUTIL_H_

#include"common.h"

int tcp_server(const char *host, unsigned short port);
int accept_timeout(int fd, struct sockaddr_in *addr, unsigned int wait_seconds);
ssize_t readn(int fd, void *buf, size_t count);
ssize_t writen(int fd, const void *buf, size_t count);
ssize_t readline(int sockfd, void *buf, size_t maxline);	//按行读取函数
ssize_t recv_peek(int sockfd, void *buf, size_t len);

#endif

 

② sysutil.c 源文件

//公有工具定义
#include"sysutil.h"


/**
 * tcp_server - 启动tcp服务器
 * @host: 服务器IP地址或者服务器主机名
 * @port: 服务器端口
 * 成功返回监听套接字
 */
int tcp_server(const char *host, unsigned short port)
{
	int listenfd; //监听套接字
	//(PF_INET网际协议, SOCK_STREAM(套接字类型-流式套接字), 
	//0(自动选择TCP协议));
	if ((listenfd = socket(PF_INET, SOCK_STREAM, 0)) < 0)
		ERR_EXIT("tcp_server");
	
	
	//struct socketaddr_in
	//{
	//	short int sin_family;
	//}
	struct sockaddr_in servaddr;//地址套接字变量
	memset(&servaddr, 0, sizeof(servaddr));//用0初始化servaddr内容
	servaddr.sin_family = AF_INET;//地址家族-AF_INET
	if (host != NULL) 
	{
		//inet_aton 将点分十进制的IP地址转换成一个网络字节序的32位的整数,
		//将host的转换IP地址sinaddr放到servaddr.sin_addr里,若返回值等于零
		//则返回的是无效的IP地址,说明host很可
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: FTP服务器,又称为File Transfer Protocol Server,是网络上的一种文件传输协议,主要用于将文件从一个网络地址传输到另一个网络地址。其中,FTP Server指的是运行FTP协议的服务器,它负责接受来自客户端的请求,并按照FTP协议的规定进行响应。 FTP服务器有着广泛的应用,其中最常见的是Web服务器中的FTP服务器。FTP服务器可以提供文件上传和下载服务,主要用于网站的文件发布、备份和存储等。此外,FTP服务器还可以用于文件的共享、远程控制、安装程序等多种应用场景。 在工作中,我们可能需要使用一些迷你FTP服务器,以方便我们进行一些文件的传输和共享。所谓迷你FTP服务器,指的是一些小型的FTP服务器软件,它们具有简单易用的操作界面和快速高效的文件传输速度,适用于小型团队和个人使用。 与传统的FTP服务器相比,迷你FTP服务器不仅功能强大,而且占用资源较少,使得它们得以在性能不足的电脑上运行。此外,迷你FTP服务器还可以方便地进行设置和配置,以满足用户的个性化需求。 总的来说,迷你FTP服务器是一种实用的工具,它为用户提供了一种快速、安全、高效的文件传输和共享方式,值得我们在工作和生活中多加利用。 ### 回答2: FTP服务器也就是File Transfer Protocol服务器,是一种可以实现文件传输的服务器,可以提供文件上传、下载和管理等功能。FTP服务器分为大型和迷你类两种,其中迷你FTP服务器由于其轻量、易用、便携等特性,成为了广泛应用的一种FTP服务器。 迷你FTP服务器具有简单易用的特点,可以轻松搭建FTP服务器并实现文件的上传和下载。其操作简单,用户只需创建FTP用户账号,指定其访问目录,就可以实现上传下载管理等功能。同时,迷你FTP服务器的便携性也是其具有优秀特性之一,它可以在不同计算机上使用,只需将软件安装在u盘或移动硬盘中,便携性大大提高了其使用的便利性。 迷你FTP服务器还具有可扩展性和高度可定制性。FTP服务器可以通过插件等方式来扩展其功能,并可以通过调整参数和配置来实现自定义的功能和使用方式。这样,用户就可以根据自己的需求进行定制化,提高FTP服务器的作用和效率。 总而言之,迷你FTP服务器是一种轻量级FTP服务器,具有简单易用、便携性、可扩展性和高度可定制性等优点。对于需要上传、下载和管理文件的小型组织或个人用户而言,迷你FTP服务器是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值