123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- #ifndef Klient_H
- #define Klient_H
- #include <ReferenceCounter.h>
- #include "Network.h"
- #ifdef INCLUDE_SSL
- # include <openssl/bio.h>
- # include <openssl/ssl.h>
- #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
|