Klient.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #ifndef Klient_H
  2. #define Klient_H
  3. #include "Network.h"
  4. #include <ReferenceCounter.h>
  5. #ifndef HEADER_OPENSSL_TYPES_H
  6. struct SSL_CTX;
  7. struct SSL;
  8. struct BIO;
  9. #endif
  10. namespace Framework
  11. {
  12. namespace Encryption
  13. {
  14. class Key;
  15. }
  16. class Text;
  17. }
  18. using namespace Framework;
  19. namespace Network
  20. {
  21. class Klient; // aus dieser Datei
  22. class Klient : public EncryptedVerbindung, public virtual ReferenceCounter
  23. {
  24. private:
  25. SOCKET sock;
  26. sockaddr_in server;
  27. Encryption::Key *sendeKey;
  28. Encryption::Key *empfangKey;
  29. int downStreamBytes;
  30. int upStreamBytes;
  31. public:
  32. // Konstruktor
  33. __declspec( dllexport ) Klient();
  34. // Destruktor
  35. __declspec( dllexport ) ~Klient();
  36. // nicht constant
  37. __declspec( dllexport ) void setSendeKeyZ( Encryption::Key *key ); // Setzt den Schlüssel fürs Senden
  38. __declspec( dllexport ) void setEmpfangKeyZ( Encryption::Key *key ); // Setzt den Schlüssel fürs Empfangen
  39. __declspec( dllexport ) void setSendeKey( char *key, int len ); // Setzt den Schlüssel fürs Senden
  40. __declspec( dllexport ) void setEmpfangKey( char *key, int len ); // Setzt den Schlüssel fürs Empfangen
  41. __declspec( dllexport ) bool verbinde( unsigned short port, const char *ip ); // verbindet mit Server
  42. __declspec( dllexport ) bool sende( const char *nachricht, int len ) override; // sendet zum Server
  43. __declspec( dllexport ) bool getNachricht( char *nachricht, int len ) override; // empfängt Nachricht
  44. __declspec( dllexport ) bool sendeEncrypted( const char *nachricht, int len ) override; // sendet zum Server
  45. __declspec( dllexport ) bool getNachrichtEncrypted( char *nachricht, int len ) override; // empfängt Nachricht
  46. __declspec( dllexport ) int getDownloadBytes( bool reset ); // gibt die anzahl von empfangen bytes zurück
  47. __declspec( dllexport ) int getUploadBytes( bool reset ); // gibt die anzahl von versendeter bytes zurück
  48. __declspec( dllexport ) bool trenne(); // Trennt die Verbindung zum Server
  49. // constant
  50. __declspec( dllexport ) bool hatNachricht( int zeit ); // Wartet eine Zeit Lang auf eine Nachricht
  51. __declspec( dllexport ) unsigned short getServerPort() const; // gibt den Port des Servers zurück
  52. __declspec( dllexport ) const char *getServerIp() const; // gibt die Ip des Servers zurück
  53. };
  54. class SSLKlient : public Verbindung, public virtual ReferenceCounter
  55. {
  56. private:
  57. unsigned short port;
  58. Text *ip;
  59. SSL_CTX *ctx;
  60. SSL *ssl;
  61. BIO *bio;
  62. int downStreamBytes;
  63. int upStreamBytes;
  64. bool connected;
  65. public:
  66. // Konstruktor
  67. __declspec( dllexport ) SSLKlient();
  68. // Destruktor
  69. __declspec( dllexport ) ~SSLKlient();
  70. __declspec( dllexport ) bool verbinde( unsigned short port, const char *ip ); // verbindet mit Server
  71. __declspec( dllexport ) bool sende( const char *nachricht, int len ) override; // sendet zum Server
  72. __declspec( dllexport ) bool getNachricht( char *nachricht, int len ) override; // empfängt Nachricht
  73. __declspec( dllexport ) int getDownloadBytes( bool reset ); // gibt die anzahl von empfangen bytes zurück
  74. __declspec( dllexport ) int getUploadBytes( bool reset ); // gibt die anzahl von versendeter bytes zurück
  75. __declspec( dllexport ) bool trenne(); // Trennt die Verbindung zum Server
  76. // constant
  77. __declspec( dllexport ) bool hatNachricht( int zeit ); // Wartet eine Zeit Lang auf eine Nachricht
  78. __declspec( dllexport ) unsigned short getServerPort() const; // gibt den Port des Servers zurück
  79. __declspec( dllexport ) const char *getServerIp() const; // gibt die Ip des Servers zurück
  80. };
  81. }
  82. #endif