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

📄 sender.h

📁 这是一本学习 window编程的很好的参考教材
💻 H
字号:
#include "stdafx.h"
#define FRAME_LEN       1472   //=32*46
#define HEAD_LEN        32
#define DATA_LEN        FRAME_LEN - HEAD_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>
#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
struct MemNode
{
	char data[DATA_LEN];
	int  len;
};

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 dwFileOffset;
	DWORD dwBlockSize;
	BYTE byData[DATA_LEN-16];
};
typedef struct tagPacketInfo
{
	DWORD dwFlag;   //数据块的标志
	DWORD dwLen;    //Union 数据的长度
	union
	{
		FILE_HEADER fh;
		FILE_BODY   fb;
		FILE_TAILER ft;
		char szMessage[DATA_LEN-8];
	};
}PacketInfo,*pPacketInfo;

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;
static HANDLE inputfd=NULL;

static HANDLE input_id=NULL;
static HANDLE recv_ack_id=NULL;
static HANDLE send_id=NULL;

static int PeerWin=1;
static char Send_Status=0;

static HANDLE outputfd=NULL;

static HANDLE output_id=NULL;
static HANDLE recv_data_id=NULL;
static HANDLE send_data_id=NULL;

//static CRITICAL_SECTION  win_mutex;

//static HANDLE g_hSemaphore=NULL;
//int InitRecv(void);
int InitSend(char* input_fifo,BOOL bFile);

⌨️ 快捷键说明

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