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

📄 recv.h

📁 这是一本学习 window编程的很好的参考教材
💻 H
字号:
#include "stdafx.h"
#define FRAME_LEN       1472   //=32*46

#define DATA_LEN        FRAME_LEN 
#define MEMBLOCK_LEN    1024  //must <1500,because it is used in other place
#define DEFAULT_SNAPLEN FRAME_LEN

#include <stdio.h>

#include <stdarg.h>
#include <time.h>
#include <Winsock2.h>
#define HAVE_REMOTE
#include <pcap.h>
#include <list>
#pragma comment(lib,"Packet.lib")
#pragma comment(lib,"wpcap.lib")
#pragma comment(lib,"Ws2_32.lib")

#define  FILE_HEADER_FLAG 0x0001
#define  FILE_BODY_FLAG 0x0002
#define  FILE_TAILER_FLAG 0x0003
#define  MESSAGE_FLAG 0x0004
#define  FILE_FOLDER_FLAG 0x0005
#define  FILE_INIT_FLAG   0x0006
#define  FILE_END_FLAG   0x0007

#define  ANSWER_FLAG   0x0008
struct MemNode
{
	char data[DATA_LEN];
	int  len;
	int  bUsed;
};

struct FILE_HEADER{

	DWORD dwFileHash;
	
	DWORD dwFileLen;
	char szFileName[MAX_PATH];
};
struct FILE_TAILER{
	DWORD dwFileHash;
	
	DWORD dwFileLen;
	DWORD dwEndFlag;

};
struct FILE_BODY{
	DWORD dwFileHash;
	DWORD dwFilePos;
	DWORD dwBlockSize;
	BYTE byData[DATA_LEN-28];
};
struct FILE_FOLDER{
	DWORD dwIP;
	DWORD dwFilePathLen;
	TCHAR szFilePath[MAX_PATH+1];

};
struct FILE_INFO{
	DWORD dwIP;
	TCHAR szComputerName[256];
	TCHAR szDstFilePath[MAX_PATH+1];

};
typedef struct tagPacketInfo
{
	DWORD dwFlag;   //数据块的标志
	DWORD dwLen;    //Union 数据的长度

	DWORD ID;       //会话表示
	
	union
	{
		FILE_HEADER fh;
		FILE_BODY   fb;
		FILE_TAILER ft;
		FILE_FOLDER ff;
		FILE_INFO   fi;
		char szMessage[DATA_LEN-12];
	};
}PacketInfo,*pPacketInfo;

typedef std::list<MemNode > MemNodeList;
static MemNodeList MemBlock;

//static struct MemNode MemBlock[MEMBLOCK_LEN];
//static int  MemRead_pos, MemWrite_pos;
static int NEXT_SYN;
static int MY_WIN,ACK;
static char Recv_Status;//'t' or 'f'
static DWORD dwInFileSize;
static TCHAR szFileName[MAX_PATH];
static DWORD dwCheckSum=0;
static HANDLE inputfd=NULL;

static HANDLE input_id=NULL;
static HANDLE recv_id=NULL;
static HANDLE send_id=NULL;


static char Send_Status=0;

static HANDLE outputfd=NULL;

static HANDLE output_id=NULL;
static HANDLE recv_data_id=NULL;
static HANDLE send_ack_id=NULL;
static int LAST_SYN;
static int SAME_SYN_COUNT;
static TCHAR g_szFolderName[MAX_PATH];
//static CRITICAL_SECTION  mywin_mutex;

static HANDLE g_hSemaphore=NULL;
static HWND g_hRecvWnd=NULL;
static BOOL g_bInit=FALSE;

void Trace(char* fmt, ...);
int InitRecv(/*CComPtr<IHTMLElement> spCurrMsgElement*/);
void output_thread();
void Suspend();
void Resume();
void End();

⌨️ 快捷键说明

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