Klient.h 4.4 KB

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