Client.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. #ifndef Client_H
  2. #define Client_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 Client; // from this file
  25. class Client : public EncryptedConnection,
  26. public virtual ReferenceCounter
  27. {
  28. private:
  29. SOCKET sock;
  30. sockaddr_in server;
  31. Encryption::Key* sendKey;
  32. Encryption::Key* receiveKey;
  33. int downStreamBytes;
  34. int upStreamBytes;
  35. bool errorOccured;
  36. public:
  37. // Constructor
  38. __declspec(dllexport) Client();
  39. // Destructor
  40. __declspec(dllexport) ~Client();
  41. // non-constant
  42. __declspec(dllexport) void setSendKeyZ(
  43. Encryption::Key* key); // Sets the key for sending
  44. __declspec(dllexport) void setReceiveKeyZ(
  45. Encryption::Key* key); // Sets the key for receiving
  46. __declspec(dllexport) void setSendKey(
  47. const char* key, int len); // Sets the key for sending
  48. __declspec(dllexport) void setReceiveKey(
  49. const char* key, int len); // Sets the key for receiving
  50. __declspec(dllexport) bool connect(
  51. unsigned short port, const char* ip); // connects to server
  52. __declspec(dllexport) bool send(
  53. const char* message, int len) override; // sends to server
  54. __declspec(dllexport) bool getMessage(
  55. char* message, int len) override; // receives message
  56. __declspec(dllexport) bool sendEncrypted(
  57. const char* message, int len) override; // sends to server
  58. __declspec(dllexport) bool getMessageEncrypted(
  59. char* message, int len) override; // receives message
  60. __declspec(dllexport) int getDownloadBytes(
  61. bool reset); // returns the number of received bytes
  62. __declspec(dllexport) int getUploadBytes(
  63. bool reset); // returns the number of sent bytes
  64. __declspec(dllexport) bool disconnect(); // Disconnects from server
  65. // constant
  66. __declspec(dllexport) bool hasMessage(
  67. int time); // Waits for a message for a given time
  68. __declspec(dllexport) unsigned short
  69. getServerPort() const; // returns the server port
  70. __declspec(dllexport) const char*
  71. getServerIp() const; // returns the server IP
  72. __declspec(dllexport) bool
  73. waitForNextMessage() const; // waits until there is something to receive
  74. __declspec(dllexport) bool
  75. isConnected() const; // returns true if a connection exists
  76. };
  77. class SSLClient : public Connection,
  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. // Constructor
  91. __declspec(dllexport) SSLClient();
  92. // Destructor
  93. __declspec(dllexport) ~SSLClient();
  94. __declspec(dllexport) bool connect(
  95. unsigned short port, const char* ip); // connects to server
  96. __declspec(dllexport) bool send(
  97. const char* message, int len) override; // sends to server
  98. __declspec(dllexport) bool getMessage(
  99. char* message, int len) override; // receives message
  100. __declspec(dllexport) int getDownloadBytes(
  101. bool reset); // returns the number of received bytes
  102. __declspec(dllexport) int getUploadBytes(
  103. bool reset); // returns the number of sent bytes
  104. __declspec(dllexport) bool disconnect(); // Disconnects from server
  105. // constant
  106. __declspec(dllexport) bool hasMessage(
  107. int time); // Waits for a message for a given time
  108. __declspec(dllexport) unsigned short
  109. getServerPort() const; // returns the server port
  110. __declspec(dllexport) const char*
  111. getServerIp() const; // returns the server IP
  112. };
  113. } // namespace Network
  114. #endif