#ifndef Klient_H #define Klient_H #include "Network.h" #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 { private: SOCKET sock; sockaddr_in server; Encryption::Key *sendeKey; Encryption::Key *empfangKey; int downStreamBytes; int upStreamBytes; int ref; 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 // Reference Counting __declspec( dllexport ) Klient *getThis(); __declspec( dllexport ) Klient *release(); }; class SSLKlient : public Verbindung { private: unsigned short port; Text* ip; SSL_CTX* ctx; SSL* ssl; BIO* bio; int downStreamBytes; int upStreamBytes; bool connected; int ref; 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 ) unsigned short getServerPort() const; // gibt den Port des Servers zurück __declspec( dllexport ) const char *getServerIp() const; // gibt die Ip des Servers zurück // Reference Counting __declspec( dllexport ) SSLKlient *getThis(); __declspec( dllexport ) SSLKlient *release(); }; } #endif