📄 genfunc.h
字号:
//#include "DandiBase.h"
#include <stdint.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/errno.h>
#include <stdarg.h>
//#include <tidy.h>
#include <pthread.h>
#include <fcntl.h>
#include <sys/time.h>
#include <math.h>
#include <sys/stat.h>
#include <fcntl.h>
#define MAXTHREADS 30
#define SIZEBETWEENTHREADS 16384
#define BUFLEN 1024
#define sdd_ThreadBlockMinSize 262144 //the least size of each thread
#define HTTPFTP_MAGICCODE "httpftp"
#define sdd_ErrReturn(info,ret) \
{ \
printf(info); \
return ret; \
}\
typedef int (*fnDLoadFinish)(void *);
struct arg{
int threadnumber;//0-30
int a1; //range fromn a1 to a2 also lseed set to a1
int a2; //range end
int fd; //local file
int booldown;//indict whether a thread has begun
int allowotherdown;//0 other thread cannot download this thread, 1 not
int bytesleft;//how many bytes left for this thread to download?
int boolend;//whether this thread has returned.first will be set to 0;
};
typedef struct tagDLoadFileInfo
{
char magiccode[16]; /*magic code*/
int nthread; /*线程总数*/
int filelength; /*文件长度*/
int sizeget; /*已下载文件大小*/
int hosttype; /*主机协议类型,HTTP,FTP */
char host[256]; /*从URL解析的主机的地址*/
char path[256]; /*从URL解析的路径*/
char filename[256]; /*下载的文件名*/
char user[100]; /*user*/
char pass[20]; /*password*/
char localpath[256]; /*文件保存的路径*/
char referpath[256];
union /*port*/
{
int httpPort;
int ftpPort;
};
int threadId; /*线程的序号*/
struct arg astPthread[MAXTHREADS]; /*线程信息数组*/
}DLoadFileInfo;
typedef enum tagExitCause
{
FTPHTTP_NORMAL, /*正常的,未退出*/
FTPHTTP_PAUSE, /*暂停导致的退出*/
FTPHTTP_DEL, /*删除导致的退出*/
FTPHTTP_UNREACH,/*连接不到服务器*/
}ExitCause;
typedef struct tagFtpHttpDLoadInfo
{
ExitCause bTaskExit; /*退出下载任务:暂停、删除*/
int bBreakPoint; /*是否为断点下载的*/
int TotalLastGet; /*上次下载的数据大小,用于计算即时下载速度*/
fnDLoadFinish fnFinish; /*下载完成回调函数*/
DLoadFileInfo FileInfo; /*下载的文件信息,需要保存,用于断点续传*/
pthread_mutex_t lock;
struct timeval tpstart,tpend; /*开始下载时间,下载完成时间*/
}FtpHttpDLoadInfo;
typedef struct tagDloadForCreatThread
{
FtpHttpDLoadInfo *pInfo;
int threadId;
}DloadForCreatThread;
extern int SaveThreadStat(DLoadFileInfo *FileInfo, char *zxwfile);
extern int GetThreadStat(DLoadFileInfo *FileInfo, char *zxwfile);
extern void printprocess(int sizeget, int filelength);
extern int ReadEn(int sock,int n);
extern int GetConnectSocket(char* host,int iport);
extern int GetThreadSize(DLoadFileInfo *pFileInfo);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -