#ifndef Server_H #define Server_H #include "Network.h" namespace Framework { namespace Encryption { class Key; } } using namespace Framework; namespace Network { class Server; // aus dieser Datei class SKlient; // aus dieser Datei class Server { private: SOCKET sock; SOCKADDR_IN addresse; int klients; int ref; public: // Konstruktor __declspec( dllexport ) Server(); // Destruktor __declspec( dllexport ) ~Server(); // nicht constant __declspec( dllexport ) bool verbinde( unsigned short port, int warteschlangenLen ); // Öffnet das Socket __declspec( dllexport ) SKlient *getKlient(); // nimmt Klient an __declspec( dllexport ) int getKlients( bool reset ); // gibt die Anzahl der Klients zurück __declspec( dllexport ) bool trenne(); // beendet den Server // constant __declspec( dllexport ) unsigned short getPort() const; // gibt den Port zurück // Reference Counting __declspec( dllexport ) Server *getThis(); __declspec( dllexport ) Server *release(); }; class SKlient { private: SOCKET sock; sockaddr_in clientAddr; Encryption::Key *sendeKey; Encryption::Key *empfangKey; int downStreamBytes; int upStreamBytes; int ref; public: // Konstruktor __declspec( dllexport ) SKlient( sockaddr_in client, SOCKET sock ); // Destruktor __declspec( dllexport ) ~SKlient(); // nicht constant __declspec( dllexport ) void setSendeKeyZ( Encryption::Key *key ); // Setzt den Schlüssel fürs Senden __declspec( dllexport ) void setEmpfangKeyZ( Encryption::Key *key ); // Setzt den Schlüssel fürs Empfangen __declspec( dllexport ) void setSendeKey( char *key, int len ); // Setzt den Schlüssel fürs Senden __declspec( dllexport ) void setEmpfangKey( char *key, int len ); // Setzt den Schlüssel fürs Empfangen __declspec( dllexport ) bool sende( const char *nachricht, int len ); // sendet zum Klient __declspec( dllexport ) bool getNachricht( char *nachricht, int len ); // empfängt Nachricht von Klient __declspec( dllexport ) bool sendeEncrypted( const char *nachricht, int len ); // sendet zum Server __declspec( dllexport ) bool getNachrichtEncrypted( char *nachricht, int len ); // empfängt Nachricht __declspec( dllexport ) int getDownloadBytes( bool reset ); // gibt die anzahl von empfangen bytes zurück __declspec( dllexport ) int getUploadBytes( bool reset ); // gibt die anzahl von versendeter bytes zurück __declspec( dllexport ) bool trenne(); // trennt die Verbindung zum Klient // constant __declspec( dllexport ) unsigned short getPort() const; // gibt den Port zurück __declspec( dllexport ) const char *getIp() const; // gibt die Ip des Klients zurück // Reference Counting __declspec( dllexport ) SKlient *getThis(); __declspec( dllexport ) SKlient *release(); }; } #endif