#ifndef Klient_H #define Klient_H #include #include "Network.h" #ifdef INCLUDE_SSL # include # include #else struct SSL_CTX; struct SSL; struct BIO; #endif namespace Framework { namespace Encryption { class Key; } class Text; } // namespace Framework using namespace Framework; namespace Network { class Klient; // aus dieser Datei class Klient : public EncryptedVerbindung, public virtual ReferenceCounter { private: SOCKET sock; sockaddr_in server; Encryption::Key* sendeKey; Encryption::Key* empfangKey; int downStreamBytes; int upStreamBytes; bool errorOccured; public: // Konstruktor __declspec(dllexport) Klient(); // Destruktor __declspec(dllexport) ~Klient(); // nicht constant __declspec(dllexport) void setSendeKeyZ( Encryption::Key* key); // Setzt den Schlüssel fürs Senden __declspec(dllexport) void setEmpfangKeyZ( Encryption::Key* key); // Setzt den Schlüssel fürs Empfangen __declspec(dllexport) void setSendeKey( const char* key, int len); // Setzt den Schlüssel fürs Senden __declspec(dllexport) void setEmpfangKey( const char* key, int len); // Setzt den Schlüssel fürs Empfangen __declspec(dllexport) bool verbinde( unsigned short port, const char* ip); // verbindet mit Server __declspec(dllexport) bool sende( const char* nachricht, int len) override; // sendet zum Server __declspec(dllexport) bool getNachricht( char* nachricht, int len) override; // empfängt Nachricht __declspec(dllexport) bool sendeEncrypted( const char* nachricht, int len) override; // sendet zum Server __declspec(dllexport) bool getNachrichtEncrypted( char* nachricht, int len) override; // empfängt Nachricht __declspec(dllexport) int getDownloadBytes( bool reset); // gibt die anzahl von empfangen bytes zurück __declspec(dllexport) int getUploadBytes( bool reset); // gibt die anzahl von versendeter bytes zurück __declspec(dllexport) bool trenne(); // Trennt die Verbindung zum Server // constant __declspec(dllexport) bool hatNachricht( int zeit); // Wartet eine Zeit Lang auf eine Nachricht __declspec(dllexport) unsigned short getServerPort() const; // gibt den Port des Servers zurück __declspec(dllexport) const char* getServerIp() const; // gibt die Ip des Servers zurück __declspec(dllexport) bool waitForNextMessage() const; // wartet bis es etwas zu empfangen gibt __declspec(dllexport) bool isConnected() const; // gibt true zurück, wenn eine Verbindung besteht }; class SSLKlient : public Verbindung, public virtual ReferenceCounter { private: unsigned short port; Text* ip; SSL_CTX* ctx; SSL* ssl; BIO* bio; int downStreamBytes; int upStreamBytes; bool connected; public: // Konstruktor __declspec(dllexport) SSLKlient(); // Destruktor __declspec(dllexport) ~SSLKlient(); __declspec(dllexport) bool verbinde( unsigned short port, const char* ip); // verbindet mit Server __declspec(dllexport) bool sende( const char* nachricht, int len) override; // sendet zum Server __declspec(dllexport) bool getNachricht( char* nachricht, int len) override; // empfängt Nachricht __declspec(dllexport) int getDownloadBytes( bool reset); // gibt die anzahl von empfangen bytes zurück __declspec(dllexport) int getUploadBytes( bool reset); // gibt die anzahl von versendeter bytes zurück __declspec(dllexport) bool trenne(); // Trennt die Verbindung zum Server // constant __declspec(dllexport) bool hatNachricht( int zeit); // Wartet eine Zeit Lang auf eine Nachricht __declspec(dllexport) unsigned short getServerPort() const; // gibt den Port des Servers zurück __declspec(dllexport) const char* getServerIp() const; // gibt die Ip des Servers zurück }; } // namespace Network #endif