00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #if !defined(AFX_TCPCRAFTER_H__E2C01EE5_8ABA_4D74_91D6_E80D1D404E5C__INCLUDED_)
00037 #define AFX_TCPCRAFTER_H__E2C01EE5_8ABA_4D74_91D6_E80D1D404E5C__INCLUDED_
00038
00039 #if _MSC_VER > 1000
00040 #pragma once
00041 #endif // _MSC_VER > 1000
00042
00043 #include "TCPSocket.h"
00044 #include "IPCrafter.h"
00045
00046 KOMODIA_NAMESPACE_START
00047
00048 class CTCPCrafter : public CTCPSocket,
00049 public CIPCrafter
00050 {
00051 public:
00052
00053 char* GetCraftedPacket(unsigned short usSourcePort,
00054 unsigned long ulDestinationAddress,
00055 const char* pBuffer,
00056 unsigned long ulBufferSize,
00057 unsigned short usDestinationPort,
00058 unsigned short& usTotalSize)const;
00059
00060
00061 void SetUrgentPointer(unsigned short usUrgentPointer);
00062
00063
00064 void SetTCPUseDefaultChecksum(BOOL bDefault);
00065
00066
00067 void SetTCPChecksum(unsigned short usTCPChecksum);
00068
00069
00070 void SetWindow(unsigned short usWindow);
00071
00072
00073 void SetFlags(unsigned char ucFlags);
00074
00075
00076 void SetDataOffset(unsigned char ucDataOffset);
00077
00078
00079 void SetAcknowledgeNumber(unsigned int uiAcknowledgeNumber);
00080
00081
00082 void SetSequenceNumber(unsigned int uiSequenceNumber);
00083
00084
00085
00086
00087
00088 virtual BOOL SendRaw(unsigned short usSourcePort,
00089 IP aDestinationAddress,
00090 unsigned short usDestinationPort,
00091 const char* pBuffer,
00092 unsigned long ulBufLength,
00093 unsigned char ucFlags=0);
00094
00095
00096
00097
00098
00099 virtual BOOL SendRaw(unsigned short usSourcePort,
00100 const std::string& rDestinationAddress,
00101 unsigned short usDestinationPort,
00102 const char* pBuffer,
00103 unsigned long ulBufLength,
00104 unsigned char ucFlags=0);
00105
00106
00107 CTCPCrafter();
00108 virtual ~CTCPCrafter();
00109 protected:
00110
00111 virtual LPIpHeader ConstructIPHeader (unsigned char ucProtocol,
00112 unsigned short usFragmentationFlags,
00113 unsigned char ucTTL,
00114 unsigned short usIdentification,
00115 unsigned char ucHeaderLength)const;
00116
00117
00118 virtual void FinalIPHeader(LPIpHeader lpHead)const;
00119
00120
00121 virtual LPTCPHeader ConstructTCPHeader(unsigned short usSourcePort,
00122 unsigned short usDestinationPort,
00123 unsigned char ucHeaderLength)const;
00124
00125
00126 virtual void FinalTCPHeader(LPTCPHeader lpHead)const;
00127 private:
00128
00129 CTCPCrafter(const CTCPCrafter& rCrafter);
00130
00131
00132 CTCPCrafter& operator=(const CTCPCrafter& rCrafter);
00133
00134
00135 unsigned int m_uiSequenceNumber;
00136
00137
00138 unsigned int m_uiAcknowledgeNumber;
00139
00140
00141 unsigned char m_ucDataOffset;
00142
00143
00144 unsigned char m_ucFlags;
00145
00146
00147 unsigned short m_usWindow;
00148
00149
00150 unsigned short m_usTCPChecksum;
00151 BOOL m_bTCPUseDefaultChecksum;
00152
00153
00154 unsigned short m_usUrgentPointer;
00155 };
00156
00157 KOMODIA_NAMESPACE_END
00158
00159 #endif // !defined(AFX_TCPCRAFTER_H__E2C01EE5_8ABA_4D74_91D6_E80D1D404E5C__INCLUDED_)