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

📄 transferfile.h

📁 刚学VC时写的文件传输程序,全部用SocketAPI编写
💻 H
字号:
#ifndef	__TRANSFER_FILE_H__
#define	__TRANSFER_FILE_H__


#include <WinSock.h>

typedef unsigned long DWORD;
typedef unsigned char BYTE;


typedef struct _PROGRESS{
	DWORD		totallen;
	DWORD		position;
	BYTE		per;		//progress percent
	BYTE		flag;		//0: in progress, 1: complete, 0x80: locked
	LPVOID		event;		//show porgress event: DEV_SHOWPROGRESSEVENT
	WORD		index;		//thread index
}PROGRESS, *PPROGRESS;


typedef DWORD (WINAPI *DEV_SHOWPROGRESSEVENT)(PPROGRESS progress);



typedef	struct	_TRAN_CTRL{
	BYTE	status;
	BYTE	sequence;
	DWORD	offset;
	DWORD	fsize;
	DWORD	lastpos;
}TRAN_CTRL, *PTRAN_CTRL;


typedef	struct	_TRAN_THREAD{
	SOCKET					sock;
	HANDLE					hfile;
	HANDLE					thread;
	SOCKADDR_IN				addr;
	PTRAN_CTRL				ctrl;
	DEV_SHOWPROGRESSEVENT	progress;
}TRAN_THREAD, *PTRAN_THREAD;


typedef	struct	_TRAN_LIST{
	PTRAN_THREAD	context;
	LPVOID			next;
}TRAN_LIST, *PTRAN_LIST;




typedef struct _CONNECT_LIST{
	SOCKET		sock;
	SOCKADDR_IN	addr;
	LPVOID		next;
}CONNECT_LIST, TCONNECT_LIST, *PCONNECT_LIST;



typedef struct _TF_COMMAND{
	BYTE		header;
	BYTE		cmd;
	BYTE		seq;
	BYTE		opcode;
	BYTE		low;
	BYTE		high;
	PBYTE		data;
	BYTE		bcc;
}TF_COMMAND, *PTF_COMMAND;



#define	TRAN_STOP				0x00
#define	TRAN_START				0x01

#define	TRAN_FIN				0x01
#define	TRAN_SYN				0x02
#define	TRAN_FAIL				0x04
#define	TRAN_ACK				0x08

#define	TRAN_REQ_READ			0x00
#define	TRAN_REQ_WRITE			0x01

#define	TRAN_REQ_DATA			0x00
#define	TRAN_REQ_DIR			0x01

#define	TRAN_BUFFER_SIZE		1024 * 4	//0x0500

#define	COMMAND_HEADER			0x45
#define	COMMAND_HEADER_LENGTH	0x07

#define	TRAN_TIMEOUT_TIME		0x0800

#define	INIT_CMD(c)					\
	c->header = COMMAND_HEADER;		\
	c->cmd = 0;						\
	c->seq = 0;						\
	c->opcode = 0;					\
	c->low = 0;						\
	c->high = 0;					\
	c->data = NULL;					\
	c->bcc = 0;


#define	INVALID_COMMAND(A)		((A >= TRAN_REQ_READ) && (A <= TRAN_REQ_WRITE))

//extern DWORD WINAPI net_TransferFile(unsigned char * fileName, unsigned char * sip, WORD port);
//extern DWORD WINAPI net_Initialization();



#define	CM_SOCKETMESSAGE			WM_USER + 0x0001
#define	CM_DEFERFREE				WM_USER + 0x0002
#define	CM_LOOKUPCOMPLETE			WM_USER + 0x0003

typedef struct _NETSOCKETMESSAGE{
	SOCKET		sock;
	WORD		event;
	WORD		error;
	DWORD		msg;
	DWORD		result;
}NETSOCKETMESSAGE, TNETSOCKETMESSAGE, *PNETSOCKETMESSAGE;


#define	RET_SUCCESS					0x00
#define	RET_FAILURE					0x80


extern BYTE inet_Calc_BCC(PBYTE buf, WORD len);
extern void inet_Reply_Remote(SOCKET s, PTF_COMMAND pcmd);

#define BCC				inet_Calc_BCC
#define	REPLY_REMOTE	inet_Reply_Remote




#endif	//__TRANSFER_FILE_H__



⌨️ 快捷键说明

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