123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- #ifndef Network_H
- #define Network_H
- #ifdef WIN32
- #ifdef _DEBUG
- #ifndef _LTMDB
- #define _CRTDBG_MAP_ALLOC
- #include <stdlib.h>
- #include <crtdbg.h>
- #define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__)
- #define new DEBUG_CLIENTBLOCK
- #define _LTMDB
- #endif
- #endif
- #define _WINSOCK_DEPRECATED_NO_WARNINGS
- #include <WinSock2.h>
- #else
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <sys/socket.h>
- #include <sys/time.h>
- #include <unistd.h>
- #include <fcntl.h>
- #include <iostream>
- #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 <Reader.h>
- #include <Writer.h>
- 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:
- __declspec( dllexport ) 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
- __declspec( dllexport ) void lese( char *bytes, int len ) override;
- //! Ließt die nächste zeile der Resource ein
- //! \return Die gelesene Zeile als Text mit zeilenumbruch
- __declspec( dllexport ) Framework::Text *leseZeile() override;
- //! Prüft, ob die Resource vollständig gelesen wurde
- //! return 1, wenn die Resource vollständig gelesen wurde. 0, sonst
- __declspec( dllexport ) bool istEnde() const override;
- };
- class NetworkWriter : public Framework::StreamWriter
- {
- private:
- Verbindung *verbindung;
- public:
- __declspec( dllexport ) 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
- __declspec( dllexport ) 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
- __declspec( dllexport ) bool istEnde() const override;
- };
- class EncryptedNetworkReader : public Framework::StreamReader
- {
- private:
- EncryptedVerbindung *verbindung;
- public:
- __declspec( dllexport ) 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
- __declspec( dllexport ) void lese( char *bytes, int len ) override;
- //! Ließt die nächste zeile der Resource ein
- //! \return Die gelesene Zeile als Text mit zeilenumbruch
- __declspec( dllexport ) Framework::Text *leseZeile() override;
- //! Prüft, ob die Resource vollständig gelesen wurde
- //! return 1, wenn die Resource vollständig gelesen wurde. 0, sonst
- __declspec( dllexport ) bool istEnde() const override;
- };
- class EncryptedNetworkWriter : public Framework::StreamWriter
- {
- private:
- EncryptedVerbindung *verbindung;
- public:
- __declspec( dllexport ) 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
- __declspec( dllexport ) 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
- __declspec( dllexport ) bool istEnde() const override;
- };
- }
- #endif
|