#ifndef Network_H #define Network_H #ifdef WIN32 #ifdef _DEBUG #ifndef _LTMDB #define _CRTDBG_MAP_ALLOC #include #include #define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__) #define new DEBUG_CLIENTBLOCK #define _LTMDB #endif #endif #define _WINSOCK_DEPRECATED_NO_WARNINGS #include #else #include #include #include #include #include #include #include #define __declspec( x ) #define __int64 long long #ifndef SOCKET #define SOCKET int #define SOCKADDR_IN sockaddr_in #define ADDR_ANY INADDR_ANY #define closesocket close #define PHOSTENT hostent* #endif #endif #include #include namespace Framework { class Text; } namespace Network { __declspec( dllexport ) void Start( int maxClients ); __declspec( dllexport ) void getHostName( char *name, int bufferLen ); __declspec( dllexport ) char *getHostAddresse(); __declspec( dllexport ) void Exit(); class Verbindung { public: virtual bool sende( const char *nachricht, int len ) = 0; // sendet Nachricht virtual bool getNachricht( char *nachricht, int len ) = 0; // empfängt Nachricht }; class EncryptedVerbindung : public Verbindung { public: virtual bool sendeEncrypted( const char *nachricht, int len ) = 0; // sendet Nachricht virtual bool getNachrichtEncrypted( char *nachricht, int len ) = 0; // empfängt Nachricht }; class NetworkReader : public Framework::StreamReader { private: Verbindung *verbindung; public: NetworkReader( Verbindung *v ); //! Ließt aus der Datei //! \param bytes Ein Array, der mit Bytes aus der Resource gefüllt werden soll //! \param len Wie viele Bytes aus der Resource gelesen werden sollen void lese( char *bytes, int len ) override; //! Ließt die nächste zeile der Resource ein //! \return Die gelesene Zeile als Text mit zeilenumbruch Framework::Text *leseZeile() override; //! Prüft, ob die Resource vollständig gelesen wurde //! return 1, wenn die Resource vollständig gelesen wurde. 0, sonst bool istEnde() const override; }; class NetworkWriter : public Framework::StreamWriter { private: Verbindung *verbindung; public: NetworkWriter( Verbindung *v ); //! Schreibt in die Resource //! \param bytes Ein Array, der die Bytes enthält, welche in die Resource geschrieben werden soll //! \param len Wie viele Bytes in die Resource geschrieben werden sollen void schreibe( const char *bytes, int len ) override; //! Prüft, ob die Resource vollständig geschrieben wurde //! return 1, wenn die Resource vollständig geschrieben wurde. 0, sonst bool istEnde() const override; }; class EncryptedNetworkReader : public Framework::StreamReader { private: EncryptedVerbindung *verbindung; public: EncryptedNetworkReader( EncryptedVerbindung *v ); //! Ließt aus der Datei //! \param bytes Ein Array, der mit Bytes aus der Resource gefüllt werden soll //! \param len Wie viele Bytes aus der Resource gelesen werden sollen void lese( char *bytes, int len ) override; //! Ließt die nächste zeile der Resource ein //! \return Die gelesene Zeile als Text mit zeilenumbruch Framework::Text *leseZeile() override; //! Prüft, ob die Resource vollständig gelesen wurde //! return 1, wenn die Resource vollständig gelesen wurde. 0, sonst bool istEnde() const override; }; class EncryptedNetworkWriter : public Framework::StreamWriter { private: EncryptedVerbindung *verbindung; public: EncryptedNetworkWriter( EncryptedVerbindung *v ); //! Schreibt in die Resource //! \param bytes Ein Array, der die Bytes enthält, welche in die Resource geschrieben werden soll //! \param len Wie viele Bytes in die Resource geschrieben werden sollen void schreibe( const char *bytes, int len ) override; //! Prüft, ob die Resource vollständig geschrieben wurde //! return 1, wenn die Resource vollständig geschrieben wurde. 0, sonst bool istEnde() const override; }; } #endif