Server.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #ifndef Server_H
  2. #define Server_H
  3. #include "Network.h"
  4. namespace Framework
  5. {
  6. namespace Encryption
  7. {
  8. class Key;
  9. }
  10. }
  11. using namespace Framework;
  12. namespace Network
  13. {
  14. class Server; // aus dieser Datei
  15. class SKlient; // aus dieser Datei
  16. class Server
  17. {
  18. private:
  19. SOCKET sock;
  20. SOCKADDR_IN addresse;
  21. int klients;
  22. int ref;
  23. public:
  24. // Konstruktor
  25. __declspec( dllexport ) Server();
  26. // Destruktor
  27. __declspec( dllexport ) ~Server();
  28. // nicht constant
  29. __declspec( dllexport ) bool verbinde( unsigned short port, int warteschlangenLen ); // Öffnet das Socket
  30. __declspec( dllexport ) SKlient *getKlient(); // nimmt Klient an
  31. __declspec( dllexport ) int getKlients( bool reset ); // gibt die Anzahl der Klients zurück
  32. __declspec( dllexport ) bool trenne(); // beendet den Server
  33. // constant
  34. __declspec( dllexport ) unsigned short getPort() const; // gibt den Port zurück
  35. // Reference Counting
  36. __declspec( dllexport ) Server *getThis();
  37. __declspec( dllexport ) Server *release();
  38. };
  39. class SKlient
  40. {
  41. private:
  42. SOCKET sock;
  43. sockaddr_in clientAddr;
  44. Encryption::Key *sendeKey;
  45. Encryption::Key *empfangKey;
  46. int downStreamBytes;
  47. int upStreamBytes;
  48. int ref;
  49. public:
  50. // Konstruktor
  51. __declspec( dllexport ) SKlient( sockaddr_in client, SOCKET sock );
  52. // Destruktor
  53. __declspec( dllexport ) ~SKlient();
  54. // nicht constant
  55. __declspec( dllexport ) void setSendeKeyZ( Encryption::Key *key ); // Setzt den Schlüssel fürs Senden
  56. __declspec( dllexport ) void setEmpfangKeyZ( Encryption::Key *key ); // Setzt den Schlüssel fürs Empfangen
  57. __declspec( dllexport ) void setSendeKey( char *key, int len ); // Setzt den Schlüssel fürs Senden
  58. __declspec( dllexport ) void setEmpfangKey( char *key, int len ); // Setzt den Schlüssel fürs Empfangen
  59. __declspec( dllexport ) bool sende( const char *nachricht, int len ); // sendet zum Klient
  60. __declspec( dllexport ) bool getNachricht( char *nachricht, int len ); // empfängt Nachricht von Klient
  61. __declspec( dllexport ) bool sendeEncrypted( const char *nachricht, int len ); // sendet zum Server
  62. __declspec( dllexport ) bool getNachrichtEncrypted( char *nachricht, int len ); // empfängt Nachricht
  63. __declspec( dllexport ) int getDownloadBytes( bool reset ); // gibt die anzahl von empfangen bytes zurück
  64. __declspec( dllexport ) int getUploadBytes( bool reset ); // gibt die anzahl von versendeter bytes zurück
  65. __declspec( dllexport ) bool trenne(); // trennt die Verbindung zum Klient
  66. // constant
  67. __declspec( dllexport ) unsigned short getPort() const; // gibt den Port zurück
  68. __declspec( dllexport ) const char *getIp() const; // gibt die Ip des Klients zurück
  69. // Reference Counting
  70. __declspec( dllexport ) SKlient *getThis();
  71. __declspec( dllexport ) SKlient *release();
  72. };
  73. }
  74. #endif