⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ftppub.h

📁 模拟linux平台下边的vsFtp服务器可以实现文件的断点续传和下载
💻 H
字号:
#ifndef FTP_PUB
#define FTP_PUB
#include <sys/param.h>
#include <time.h>
#include <ctype.h>

extern int connected_socket;//connected_socket这个是已连接套接字,用来跟客户端进行命令传输
extern int datatrans_socket;//这个套接字用来跟客户端进行数据传输

extern long offset;//在断点续传中SERT指令要用的
extern int transfers_mode;//定义传输模式 0为普通模式,即没有采用断点续传模式 1为 APPE断点续传模式 2为REST断点续传模式

extern int pasv_datatrans_socket;//用在被动模式下进行数据传输
extern int pasv_listen_socket;//用在被动模式下进行监听的套接字

extern int child_pid;//保存子进程ID

extern char userName[512];//全局变量userName用来保存用户名
extern int userlogined;//标记用户以登入

extern int g_shmid;//共享内存标识

extern char path[PATH_MAX+1];//用来存放路径
extern char anonymous_dir[PATH_MAX+1];//匿名用户的根目录
extern char cur_anonymous_dir[PATH_MAX+1];//匿名用户的当前物理目录
extern char oldpath[PATH_MAX+1];//这个字符数组用来在进行重命的时候用
extern int IsPASV;//用来标识被动模式
extern int IsAnonymous;//标记当前登入用户是否是匿名用户

extern int timeout;
extern int sem_id;//信号集标识

extern int port_no;//端口号

extern int is_have_timeout;//用来标识现在是否在要有超时

extern int g_isupload;//是否在上传
extern int g_isdownload;//是否在下载

extern int downspeed;//限制下载速 度
extern int upspeed;//限制上传速 度

void Trim(char number1[]);		//接受一个字符串,去除其前后空格
void Respond(int signal,char * message,...);//服务端响应客户端请求 这个函数是可变参数函数,功能类printf函数
int Intercept_Command(char *cmd,char * msg);//截取命令
int Intercept_Parameter(char *par,char *msg);//截取命令的参数
int Login(char * username,char *pwd);//验证用户跟密码是一致
int separate_ip_port(char *parma,char *ip,int *port);//从字符串中分离出IP地址跟端口 例将192,168,0,1,8,59字符串中前四个数值转换成IP地址,后两个变成端口号,8是端口号的高8位的十进制值,59是端口号的低8位的十进制值

int Anonymous_Login(char * username,char *input_pwd);//验证用户名跟密码,符合条件下更改用户目录 返回帐号密码类型1正确,2匿名,-1错误

typedef struct flux_ctrl
{
	int uptotal;   //服务器上传文件总数
	int downtotal; //服务器下载文件总数
	long upsize;    //服务器上传文件总数
	long downsize;	 //服务器下载文件总数
}FLUXCTRL;

extern FLUXCTRL * g_segptr;//指向服务器共享信息结构体

//////////////////////////////////////////////////////////////////////////
//共享内存函数
int CreateShm();//创建一个共享内存
int Attach_Shm(int shmid);//将共享内存段附加到当前进程未使用的地址上去shared memory segment
int Removeshm(int shmid);//删除共享内存
int ChangeMode(int shmid, char *mode);//修改共享内存权限

void Create_Sem(int members);		//创建信号量
int P_Sem(int sem_id,int sem_num);		//P操作
int V_Sem(int sem_id,int sem_num);		//V操作
int del_semvalue(int sem_id);		//删除信号量

void Up_Total(int num);//服务器上传文件总数

void Down_Total(int num);//服务器下载文件总数

void Up_Size(int size);//服务器上传文件大小

void Down_Size(int size);//服务器下载文件大小


int Get_Up_Total();//服务器上传文件总数

int Get_Down_Total();//服务器下载文件总数

long Get_Up_Size();//服务器上传文件大小

long Get_Down_Size();//服务器下载文件大小

typedef void (*sighandler_t)(int);

void start_timeout(int signal);

void stop_timeout(int signal);

void To_Send_Signal_Start_Timeout();




union semun
{
	int val;                    /* value for SETVAL */
	struct semid_ds *buf;       /* buffer for IPC_STAT, IPC_SET */
	unsigned short int *array;  /* array for GETALL, SETALL */
	struct seminfo *__buf;      /* buffer for IPC_INFO */
};


struct configInfo
{
    char keyname[128];
    char value[128];
};

//读取配制文件  返回1就是读取失败 0就是成功 第一个参数是数据要存的指针,第二个是最多读取信息数 第三个指向是用来返回最终读取了多少条信息
int ReadConfigInfo(struct configInfo * config,int maxReadCount,int *alreadyReadCount);




#endif



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -