Klient.h 3.6 KB

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