Klient.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #ifndef Klient_H
  2. #define Klient_H
  3. #include "Network.h"
  4. #ifndef HEADER_OPENSSL_TYPES_H
  5. struct SSL_CTX;
  6. struct SSL;
  7. struct BIO;
  8. #endif
  9. namespace Framework
  10. {
  11. namespace Encryption
  12. {
  13. class Key;
  14. }
  15. class Text;
  16. }
  17. using namespace Framework;
  18. namespace Network
  19. {
  20. class Klient; // aus dieser Datei
  21. class Klient : public EncryptedVerbindung
  22. {
  23. private:
  24. SOCKET sock;
  25. sockaddr_in server;
  26. Encryption::Key *sendeKey;
  27. Encryption::Key *empfangKey;
  28. int downStreamBytes;
  29. int upStreamBytes;
  30. int ref;
  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. // Reference Counting
  54. __declspec( dllexport ) Klient *getThis();
  55. __declspec( dllexport ) Klient *release();
  56. };
  57. class SSLKlient : public Verbindung
  58. {
  59. private:
  60. unsigned short port;
  61. Text* ip;
  62. SSL_CTX* ctx;
  63. SSL* ssl;
  64. BIO* bio;
  65. int downStreamBytes;
  66. int upStreamBytes;
  67. bool connected;
  68. int ref;
  69. public:
  70. // Konstruktor
  71. __declspec( dllexport ) SSLKlient();
  72. // Destruktor
  73. __declspec( dllexport ) ~SSLKlient();
  74. __declspec( dllexport ) bool verbinde( unsigned short port, const char *ip ); // verbindet mit Server
  75. __declspec( dllexport ) bool sende( const char *nachricht, int len ) override; // sendet zum Server
  76. __declspec( dllexport ) bool getNachricht( char *nachricht, int len ) override; // empfängt Nachricht
  77. __declspec( dllexport ) int getDownloadBytes( bool reset ); // gibt die anzahl von empfangen bytes zurück
  78. __declspec( dllexport ) int getUploadBytes( bool reset ); // gibt die anzahl von versendeter bytes zurück
  79. __declspec( dllexport ) bool trenne(); // Trennt die Verbindung zum Server
  80. // constant
  81. __declspec( dllexport ) unsigned short getServerPort() const; // gibt den Port des Servers zurück
  82. __declspec( dllexport ) const char *getServerIp() const; // gibt die Ip des Servers zurück
  83. // Reference Counting
  84. __declspec( dllexport ) SSLKlient *getThis();
  85. __declspec( dllexport ) SSLKlient *release();
  86. };
  87. }
  88. #endif