📄 sender.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>
#pragma comment(lib,"Packet.lib")
#pragma comment(lib,"wpcap.lib")
#pragma comment(lib,"Ws2_32.lib")
#include <list>
#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-24];
};
struct FILE_INFO{
DWORD dwIP;
TCHAR szComputeName[256];
TCHAR szDstFilePath[MAX_PATH+1];
};
struct FILE_FOLDER{
DWORD dwIP;
DWORD dwFilePathLen;
TCHAR szFilePath[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;
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;
DWORD checksum(BYTE *buffer, int size) ;
int write_memblock(char *buff,int len);
BOOL beep(DWORD dwFreq);
//static CRITICAL_SECTION win_mutex;
static HANDLE g_hSemaphore=NULL;
//int InitRecv(void);
int InitSend(/*char* input_fifo,BOOL bFile*/);
void EndSend();
int Except(LPEXCEPTION_POINTERS lpEP);
void MyTrace(char* fmt, ...);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -