Hauptseite | Klassenhierarchie | Alphabetische Liste | Auflistung der Klassen | Auflistung der Dateien | Klassen-Elemente

# TCPIPComm.h

    00001 //*****************************************************************************
    00002 // project   : ANALYTICA Class Library
    00003 // part      : Communication class for simple TCP/IP
    00004 // file name : TCPIPComm.h
    00005 // version   : 1.2
    00006 // author    : Udo Weber
    00007 // platform  : MS VC++ 6.0
    00008 //
    00009 //-----------------------------------------------------------------------------
    00010 // Description:
    00011 // =============
    00012 // implementation of the class CTCPIPComm to encapsulate simple TCP/IP
    00013 // communications
    00014 // Contains the main part of the communication classes. Organizes the
    00015 // handling of the three lower classes CTCPIPCommConnect, CTCPIPCommRecv and
    00016 // CTCPIPCommSend.
    00017 //
    00018 //-----------------------------------------------------------------------------
    00019 // Revisionhistory:
    00020 // 03.07.2001 ASc  Initialize-Methode für abgeleitete Klassen
    00021 // 20.07.1998 UWe  Some bug fixes
    00022 // 20.04.1998 UWe  first version
    00023 //*****************************************************************************
    00024
    00025 #ifndef _TCPIPComm_h
    00026 #define _TCPIPComm_h
    00027
    00028 //---- includes ---------------------------------------------------------------
    00029
    00030 #include <winsock.h>
    00031
    00032 #include "TCPIPCommConnect.h"
    00033 #include "TCPIPCommSend.h"
    00034 #include "TCPIPCommReceive.h"
    00035
    00036
    00037 //---- defines/const ----------------------------------------------------------
    00038
    00039 #define MAX_DIF_ADDR    5   // Maximum of different local address
    00040
    00041 //---- enums ------------------------------------------------------------------
    00042
    00043
    00044 //---- structs ----------------------------------------------------------------
    00045
    00046
    00047 //---- classes ----------------------------------------------------------------
    00048
    00054 class CTCPIPComm : public CTCPIPCommReceive,
    00055                    public CTCPIPCommSend,
    00056                    public CTCPIPCommConnect
    00057 {
    00058    // public part
    00059 public:
    00060
    00070    CTCPIPComm( const short  TCPport,
    00071                const char   *pIPAddress,
    00072                const bool   PassiveConnection,
    00073                const long   MaxSendDataLen,
    00074                const long   MaxRecvDataLen );
    00075
    00077    virtual ~CTCPIPComm();
    00078
    00079
    00080    //
    00081    // public operations
    00082    //
    00083
    00089    int GetLastSocketError( void ) const;
    00090
    00091
    00097    bool IsConnected( void ) const;
    00098
    00105    bool ConnectRequest( void );
    00106
    00107
    00114    bool Send( const void  *pData,
    00115               const long  DataLen );
    00116
    00117
    00118
    00119    // protected part
    00120 protected:
    00121
    00122    //
    00123    // virtual callback functions
    00124    //
    00125
    00131    virtual void ConnectIndication( void ) = 0;
    00132
    00138    virtual void DisconnectIndication( void ) = 0;
    00139
    00142    CTCPIPComm( void );
    00143
    00153    void Initialize( const short  TCPport,
    00154                     const char   *pIPAddress,
    00155                     const bool   PassiveConnection,
    00156                     const long   MaxSendDataLen,
    00157                     const long   MaxRecvDataLen );
    00158
    00159    // private part
    00160 private:
    00161
    00167    void ConInd( void );
    00168
    00174    void DisInd( void );
    00175
    00181    void RecvDisInd( void );
    00182
    00188    void SendDisInd( void );
    00189
    00190
    00191
    00192    // member definition
    00193    int             m_LastSocketError;
    00194    bool            m_PassiveConnection;
    00195    bool            m_LineConnected;
    00196    SOCKADDR_IN     m_RemoteAddr;
    00197    SOCKET          m_PassiveSocket;
    00198
    00199    bool            m_bInitialized;
    00200
    00201    bool            m_bTerminating;
    00202
    00203    static int      m_NumOfInstances;
    00204
    00205    static bool     m_bArrayUsed[MAX_DIF_ADDR];
    00206    static SOCKADDR_IN     m_ArrayRemoteAddr[MAX_DIF_ADDR];
    00207    static SOCKET   m_ArrayPassiveSocket[MAX_DIF_ADDR];
    00208 };
    00209
    00210
    00211 //
    00212 // inline operations
    00213 //
    00214
    00215 // get last socket error
    00216 inline int CTCPIPComm::GetLastSocketError( void ) const
    00217 {
    00218    return m_LastSocketError;
    00219 }
    00220
    00221 // Returns connected state (TRUE/FALSE)
    00222 inline bool CTCPIPComm::IsConnected( void ) const
    00223 {
    00224    return m_LineConnected;
    00225 }
    00226
    00227
    00228
    00229 #endif // _TCPIPComm_h