/** \class SocketObject * * \brief Die Klasse SocketObject kapselt die Verwendung von Sockets * * Die Klasse SocketObject liefert eine komfortable Benutzungs-Schnittstelle * für Sockets. * Sie bietet Methoden zum Senden und Empfangen von verschiedenen Datentypen, * sowie Methoden zum Verbindungsauf- und abbau. */ #ifndef _SOCKETOBJECT_H #define _SOCKETOBJECT_H #if (defined(__msdos__) || defined(WIN32)) #include #else #include #include #include #include #include #include #include #endif #include #include #include #define SOCKETOBJECT_NOT_CONNECTED "SOCKETOBJECT_NOT_CONNECTED" #define SOCKETOBJECT_RECV_ERROR "SOCKETOBJECT_RECV_ERROR" class SocketObject { public: static const int MAXRECV = 1024; private: #if defined(__msdos__) || defined(WIN32) SOCKET _skSocket; #else int _skSocket; #endif public: #if defined(__msdos__) || defined(WIN32) // Konstruktor der Klasse SocketObject(); // Copy-Konstruktor SocketObject(SocketObject& sk); // Destruktor der Klasse ~SocketObject(); #endif /****** NUR SERVER - METHODEN ******/ /** \brief Bindet Socket an einen Port * * Die bind()-Methdode gibt dem Socket einen * lokalen Namen, damit andere Prozesse mit * ihm kommunizieren können. * Wird nur vom Server benutzt! * * @param iPort Port an den gebunden werden soll * * @return 0 = ok, SOCKET_ERROR = Fehler * */ int Bind(unsigned short int iPort); /** \brief Wartet auf eigehende Verbindungsanfragen * * Die Listen()-Methode erwartet eingehende * Verbindungsanfragen. * Wird nur vom Server benutzt! * * @return 0 = ok, SOCKET_ERROR = Fehler * */ int Listen(); /** \brief Acceptiert eingehende Verbindungsanfrage * * Die accept()-Methode akzeptiert eine eingehende * Verbindung und "startet" die Verbindung" * Wird nur vom Server benutzt! * * @param skAcceptSocket zu akzeptierender Socket */ bool Accept(SocketObject &skAcceptSocket); /****** SERVER - METHODEN ENDE ******/ /****** NUR CLIENT - METHODEN ******/ /** \brief Stellt Verbindsanfage an den Server * * Mittels der connect()-Methode stellt der Client * eine Verbindungsanfrage an den Server her, der * * * Wird nur vom Client benutzt! * * @param szServerAdrress Adresse des Servers * @param iPort Port des Server */ bool Connect(const char *szServerAddress, unsigned short int iPort, bool nonblock); /** \brief Stellt Verbindsanfage an den Server * * Mittels der connect()-Methode stellt der Client * eine Verbindungsanfrage an den Server her, der * Die IP wird hier als String übergeben * Wird nur vom Client benutzt! * * @param ServerAdrress Adresse des Servers * @param iPort Port des Server */ bool Connect(const std::string ServerAddress, unsigned short int iPort, bool nonblock = false); void setBlockingMode(bool nonblock); std::string receiveLine(); int receiveLine(char* array, int arraySize); /****** CLIENT - METHODEN ENDE ******/ /** * Die send()-Methode sendet Daten an den verbundenen * Socket * * @param szBuffer zu sendende Nachricht * @param iBufferLength Läge der Nachricht * @param iFlags Flags * * @return Anzahl der gesendeten Bytes */ int Send(const char *szBuffer, int iBufferLength, int iFlags); /** \brief Senden eines Strings * * Die Methode sendet einen String an den Kommunikationspartner * * @param toSend String, der gesendet werden soll * * @return Anzahl der gesendeten Bytes */ int Send(const std::string toSend); /** \brief Empfängt Characters * * @param szBuffer hier wird die Nachricht reingeschrieben * @param iBufferLength max. Läge der Nachricht * @param iFlags Flags * * @return Anzahl der gesendeten Bytes */ int Recv(char *szBuffer, int iBufferLength, int iFlags); int Recv (std::string& s); void Disconnect(); }; #endif