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_)