📄 sender.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 + -