00001 /***********************************************************************************/ 00002 /** \file RNSocket.h 00003 ** \brief Header File zur Klasse RNSocket 00004 ************************************************************************************* 00005 ** Autor: Christian Roesch 00006 ** 00007 ** Erstelldatum: 27.03.2002 00008 ** letzte Aenderung: 31.03.2002 00009 ************************************************************************************* 00010 ** Die Klasse RNSocket beitet eine Klasse zur Kapselung von WinSock. 00011 ************************************************************************************/ 00012 00013 #ifndef _RNSocket_H 00014 #define _RNSocket_H 00015 00016 // includes 00017 #include <winsock.h> 00018 #include <stdio.h> 00019 00020 // Klassen-Deklaration 00021 00022 /***********************************************************************************/ 00023 /** \brief Kapsel für WinSock 00024 ************************************************************************************* 00025 ** Die Klasse RNSocket beitet eine Klasse zur Kapselung von WinSock. Sie enthält 00026 ** Methoden um Verbindungen herzustellen und Daten zu senden und zu empfangen. 00027 ** Die Klasse gibt jeweils bool Werte zurück, die den Erfolg der Methoden angeben. 00028 ** Bei einem false ist die Methode gescheitert, und der entsprechende Fehlercode 00029 ** kann über WSAGetLastError ausgelesen werden. 00030 ************************************************************************************/ 00031 00032 class RNSocket 00033 { 00034 public: 00035 RNSocket(void); 00036 ~RNSocket(void); 00037 00038 static bool init(int iMajorVersion = 1, int iMinorVersion = 1); 00039 00040 static bool cleanUp(void); 00041 00042 bool create(int iAdressFamily=AF_INET, int iType=SOCK_STREAM,int iProtocol=IPPROTO_IP); 00043 00044 bool close(void); 00045 00046 bool shutdown(int iFlags); 00047 00048 bool connect(char* pcDestName, int iPort, int iAddressFamily=AF_INET); 00049 00050 bool bind(char* pcDestName, int iPort); 00051 00052 bool listen(int iBackLog=SOMAXCONN); 00053 00054 bool accept(RNSocket &socketNew); 00055 00056 bool receive(void* pvoidData, int* piLength, int iFlags=0); 00057 00058 bool send(void* pvoidData, int* piLength, int iFlags=0); 00059 00060 bool isReadable(bool &bReadable, int iMilliSeconds); 00061 00062 bool isWriteable(bool &bWriteable, int iMilliSeconds); 00063 00064 protected: 00065 00066 private: 00067 //! Socket - Handle 00068 SOCKET m_Socket; 00069 00070 //! Adresse dieses Sockets 00071 sockaddr_in m_addrLocal; 00072 00073 //! Adresse des Ziel-Sockets 00074 sockaddr_in m_addrTarget; 00075 00076 //! Socket Version 00077 static WSAData m_wsaData; 00078 00079 //! gibt an, um WinSockets initialisiert sind 00080 static bool m_bSocketInitialized; 00081 }; 00082 00083 #endif//_RNSocket_H 00084 00085 class RNSocket; 00086 00087 00088 /************************************************************************************ 00089 ** Ende der Datei: RNSocket.h 00090 ************************************************************************************/