📄 protocol.h
字号:
// Protocol.h: interface for the Protocol class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_PROTOCOL_H__521E360B_E6FC_40BB_9F26_A3ECB2EEEBFC__INCLUDED_)
#define AFX_PROTOCOL_H__521E360B_E6FC_40BB_9F26_A3ECB2EEEBFC__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "winsock2.h"
//Some const used by applications.
#define ICMP_ECHO (8)
#define ICMP_ECHOREPLY (0)
#define ICMP_PACKET_MAX_SIZE (65535)
#define ICMP_PACKET_MIN_SIZE (8)
#define RECV_TIMEOUT (0)
#define SEND_TIMEOUT (1)
//Command used by applications.
#define EN_COMMAND_GET_MACHINE_IFNO (0)
#define EN_COMMAND_ACK_GET_MACHINE_INFO (1)
#define EN_COMMAND_LOCK_KEYBOARD (2)
#define EN_COMMAND_ACK_LOCK_KEYBOARD (3)
#define EN_COMMAND_LOCK_MOUSE (4)
#define EN_COMMAND_ACK_LOCK_MOUSE (5)
//Data structure used by applications.
//Ip header.
typedef struct ipheader
{
unsigned char ucVer_HLen;
unsigned char ucTos;
unsigned short usTotalLen;
unsigned short usId;
unsigned short usSign_FragOff;
unsigned char ucTtl;
unsigned char ucUpProtocol;
unsigned short usCheckSum;
unsigned long ulSrcIpAddr;
unsigned long ulDestIpAddr;
}IP_HEADER;
//Icmp header used by the ping application.
typedef struct icmpheader
{
unsigned char ucType;
unsigned char ucCode;
unsigned short usCheckSum;
unsigned short usId;
unsigned short usSeq;
}ICMP_HEADER;
//Private protocol used by manager.
typedef struct commandheader
{
unsigned char ucVerHLen;//Version and length of header.
unsigned char ucSign;//Sign bits. | 0 | 0 | 0 | 0 | 0 | 0 | 0 | open tunnel |
unsigned char ucType;//command type.
unsigned char ucCode;//command code.
unsigned long ulSessionId;//Used by manager to match sessions between client and server.
char pcAuthCode[10];//sign indicates that the packet is sent by our application.
//Options may be added here.
}COMMAND_HEADER;
typedef struct userdata
{
char * pcData;
int nDataLen;
char pcDestIpAddr[50];
}USER_DATA;
class Protocol
{
public:
Protocol();
BOOL InitProtocol(void);
BOOL CleanProtocol(void);
BOOL SetTimeOut(int nFlag, int nValue);
int SendIcmpPacket(char * pcDataBuffer, int nBuffLen, int nOption \
, char * pcDestIpAddr);
int RecvIcmpPacket(char * pcDataBuffer, int nBuffLen, int nOption );
virtual ~Protocol();
protected:
BOOL CreateIcmpPacket(char * pcDataBuffer, int nBuffLen, int nOption);
int ParseIcmpPacket(char * pcDataBuffer, int nBuffLen, int nOption);
BOOL CalculateCheckSum(unsigned short * pusDataBuffer, int nBuffLen \
, unsigned short * pusCheckSum);
//test
void RecordChar(int nValue);
void RecordPacket(int nBytes);
private:
SOCKET m_rawSocket;
int m_nSendTimeOut;
int m_nRecvTimeOut;
char * m_pucSendBuffer;
char * m_pucRecvBuffer;
sockaddr_in m_DestSocketAddr;
};
#endif // !defined(AFX_PROTOCOL_H__521E360B_E6FC_40BB_9F26_A3ECB2EEEBFC__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -