123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- #ifndef Network_H
- #define Network_H
- #ifdef WIN32
- # ifdef _DEBUG
- # ifndef _LTMDB
- # define _CRTDBG_MAP_ALLOC
- # include <crtdbg.h>
- # include <stdlib.h>
- # define DEBUG_CLIENTBLOCK new (_CLIENT_BLOCK, __FILE__, __LINE__)
- # define new DEBUG_CLIENTBLOCK
- # define _LTMDB
- # endif
- # endif
- # define _WINSOCK_DEPRECATED_NO_WARNINGS
- # include <WinSock2.h>
- #else
- # include <arpa/inet.h>
- # include <fcntl.h>
- # include <iostream>
- # include <netinet/in.h>
- # include <sys/socket.h>
- # include <sys/time.h>
- # include <unistd.h>
- # define __declspec(x)
- # define __int64 long long
- # ifndef SOCKET
- # define SOCKET int
- # define SOCKADDR_IN sockaddr_in
- # define ADDR_ANY INADDR_ANY
- # define closesocket close
- # define PHOSTENT hostent*
- # endif
- #endif
- #include <Reader.h>
- #include <Writer.h>
- namespace Framework
- {
- class Text;
- }
- namespace Network
- {
- __declspec(dllexport) void Start(int maxClients);
- __declspec(dllexport) void getHostName(char* name, int bufferLen);
- __declspec(dllexport) char* getHostAddresse();
- __declspec(dllexport) void Exit();
- class Verbindung
- {
- public:
- virtual bool sende(const char* nachricht, int len)
- = 0; // sendet Nachricht
- virtual bool getNachricht(char* nachricht, int len)
- = 0; // empfängt Nachricht
- };
- class EncryptedVerbindung : public Verbindung
- {
- public:
- virtual bool sendeEncrypted(const char* nachricht, int len)
- = 0; // sendet Nachricht
- virtual bool getNachrichtEncrypted(char* nachricht, int len)
- = 0; // empfängt Nachricht
- };
- class NetworkReader : public Framework::StreamReader
- {
- private:
- Verbindung* verbindung;
- public:
- __declspec(dllexport) NetworkReader(Verbindung* v);
- __declspec(dllexport) virtual ~NetworkReader();
- //! Ließt aus der Datei
- //! \param bytes Ein Array, der mit Bytes aus der Resource gefüllt
- //! werden soll \param len Wie viele Bytes aus der Resource gelesen
- //! werden sollen
- __declspec(dllexport) void lese(char* bytes, int len) override;
- //! Ließt die nächste zeile der Resource ein
- //! \return Die gelesene Zeile als Text mit zeilenumbruch
- __declspec(dllexport) Framework::Text* leseZeile() override;
- //! Prüft, ob die Resource vollständig gelesen wurde
- //! return 1, wenn die Resource vollständig gelesen wurde. 0, sonst
- __declspec(dllexport) bool istEnde() const override;
- };
- class NetworkWriter : public Framework::StreamWriter
- {
- private:
- Verbindung* verbindung;
- public:
- __declspec(dllexport) NetworkWriter(Verbindung* v);
- __declspec(dllexport) virtual ~NetworkWriter();
- //! Schreibt in die Resource
- //! \param bytes Ein Array, der die Bytes enthält, welche in die
- //! Resource geschrieben werden soll \param len Wie viele Bytes in die
- //! Resource geschrieben werden sollen
- __declspec(dllexport) void schreibe(
- const char* bytes, int len) override;
- //! Prüft, ob die Resource vollständig geschrieben wurde
- //! return 1, wenn die Resource vollständig geschrieben wurde. 0, sonst
- __declspec(dllexport) bool istEnde() const override;
- };
- class EncryptedNetworkReader : public Framework::StreamReader
- {
- private:
- EncryptedVerbindung* verbindung;
- public:
- __declspec(dllexport) EncryptedNetworkReader(EncryptedVerbindung* v);
- //! Ließt aus der Datei
- //! \param bytes Ein Array, der mit Bytes aus der Resource gefüllt
- //! werden soll \param len Wie viele Bytes aus der Resource gelesen
- //! werden sollen
- __declspec(dllexport) void lese(char* bytes, int len) override;
- //! Ließt die nächste zeile der Resource ein
- //! \return Die gelesene Zeile als Text mit zeilenumbruch
- __declspec(dllexport) Framework::Text* leseZeile() override;
- //! Prüft, ob die Resource vollständig gelesen wurde
- //! return 1, wenn die Resource vollständig gelesen wurde. 0, sonst
- __declspec(dllexport) bool istEnde() const override;
- };
- class EncryptedNetworkWriter : public Framework::StreamWriter
- {
- private:
- EncryptedVerbindung* verbindung;
- public:
- __declspec(dllexport) EncryptedNetworkWriter(EncryptedVerbindung* v);
- //! Schreibt in die Resource
- //! \param bytes Ein Array, der die Bytes enthält, welche in die
- //! Resource geschrieben werden soll \param len Wie viele Bytes in die
- //! Resource geschrieben werden sollen
- __declspec(dllexport) void schreibe(
- const char* bytes, int len) override;
- //! Prüft, ob die Resource vollständig geschrieben wurde
- //! return 1, wenn die Resource vollständig geschrieben wurde. 0, sonst
- __declspec(dllexport) bool istEnde() const override;
- };
- } // namespace Network
- #endif
|