📄 ftppub.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 + -