Klient.h 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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(const char* key, int len); // Setzt den Schlüssel fürs Senden
  40. __declspec(dllexport) void setEmpfangKey(const 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. __declspec(dllexport) bool waitForNextMessage() const; // wartet bis es etwas zu empfangen gibt
  54. };
  55. class SSLKlient : public Verbindung, public virtual ReferenceCounter
  56. {
  57. private:
  58. unsigned short port;
  59. Text* ip;
  60. SSL_CTX* ctx;
  61. SSL* ssl;
  62. BIO* bio;
  63. int downStreamBytes;
  64. int upStreamBytes;
  65. bool connected;
  66. public:
  67. // Konstruktor
  68. __declspec(dllexport) SSLKlient();
  69. // Destruktor
  70. __declspec(dllexport) ~SSLKlient();
  71. __declspec(dllexport) bool verbinde(unsigned short port, const char* ip); // verbindet mit Server
  72. __declspec(dllexport) bool sende(const char* nachricht, int len) override; // sendet zum Server
  73. __declspec(dllexport) bool getNachricht(char* nachricht, int len) override; // empfängt Nachricht
  74. __declspec(dllexport) int getDownloadBytes(bool reset); // gibt die anzahl von empfangen bytes zurück
  75. __declspec(dllexport) int getUploadBytes(bool reset); // gibt die anzahl von versendeter bytes zurück
  76. __declspec(dllexport) bool trenne(); // Trennt die Verbindung zum Server
  77. // constant
  78. __declspec(dllexport) bool hatNachricht(int zeit); // Wartet eine Zeit Lang auf eine Nachricht
  79. __declspec(dllexport) unsigned short getServerPort() const; // gibt den Port des Servers zurück
  80. __declspec(dllexport) const char* getServerIp() const; // gibt die Ip des Servers zurück
  81. };
  82. }
  83. #endif