Klient.h 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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 ) unsigned short getServerPort() const; // gibt den Port des Servers zurück
  78. __declspec( dllexport ) const char *getServerIp() const; // gibt die Ip des Servers zurück
  79. };
  80. }
  81. #endif