#ifndef Klient_H #define Klient_H #include "Network.h" #include #ifndef HEADER_OPENSSL_TYPES_H struct SSL_CTX; struct SSL; struct BIO; #endif namespace Framework { namespace Encryption { class Key; } class Text; } 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; 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( char* key, int len ); // Setzt den Schlüssel fürs Senden __declspec(dllexport) void setEmpfangKey( 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 }; 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 }; } #endif