Page principale | Liste alphabétique | Liste des classes | Liste des fichiers | Membres de classe | Membres de fichier | Pages associées

NetConnect.h

Aller à la documentation de ce fichier.
00001 /*! \file NetConnect.h
00002     \brief Informations sur une connection.
00003 
00004     Informations réseau et système sur une connection.
00005 
00006     \author     aerith (http://aerith.fr)
00007     \version    1.0
00008     \date       30/03/2008
00009 */
00010 
00011 
00012 #ifndef INCLUDE_RSRC_NET_CONNECT
00013 #define INCLUDE_RSRC_NET_CONNECT
00014 
00015 #include    "../Surcouche/SurcoucheReseau.h"
00016 #include    "../Surcouche/SurcoucheMultitache.h"
00017 #include    "../Tools/Tools.h"
00018 #include    "../Error/Error.h"
00019 #include    <stdarg.h>
00020 #include    <string>
00021 #if USE_SSL == 1
00022 #include    <openssl/ssl.h>
00023 #include    <openssl/err.h>
00024 #endif
00025 
00026 #define     NET_BUFFER      10240           /*!< Taille du buffer de travail.                   */
00027 #define     NET_DEF_IP      "localhost"     /*!< Host de connection par defaut.                 */
00028 #define     NET_DEF_PORT    2000            /*!< Port de connection pas defaut.                 */
00029 
00030 #define     NET_T_NORMAL    1               /*!< Connection non sécurisée.                      */
00031 #define     NET_T_SSL       2               /*!< Connection sécurisée SSL.                      */
00032 
00033 //! Informations sur une connection.
00034 /*! Informations réseau et système sur une connection.
00035 */
00036 class NetConnect
00037 {
00038 private :
00039     unsigned int        id;                 /*!< Id du client, incrémenté à chaque nouvelle class.  */
00040     static unsigned int idMax;              /*!< Id max des client.                                 */
00041     char                buffer[NET_BUFFER]; /*!< Buffer des données.                                */
00042     unsigned int        bufferSize;         /*!< Taille du buffer.                                  */
00043 
00044 public :
00045     SOCKET              sock;               /*!< Socket de connection.                              */
00046     SOCKADDR_IN         sockName;           /*!< Information sur le socket.                         */
00047     unsigned int        port;               /*!< Port de connection.                                */
00048     string              ip;                 /*!< IP de connection.                                  */
00049     THREAD              thread;             /*!< Thread de la connection (serveur multitache).      */
00050     unsigned int        crypt;              /*!< Cryptage activé.                                   */
00051 
00052 #if USE_SSL == 1
00053     SSL                 *sslFD;             /*!< Connection pour OpenSSL.                           */
00054 #endif
00055 
00056     /*! Initialise la connection.
00057         \param iCrypt type de conenction ( \a NET_T_NORMAL ou \a NET_T_SSL )
00058     */
00059     NetConnect(unsigned int iCrypt = NET_T_NORMAL);
00060 
00061     /*! Libère la mémoire proprement
00062     */
00063     ~NetConnect();
00064 
00065     //! Retourne l'Id.
00066     /*! Retourne l'Id \a Id du client.
00067         \return Id du client.
00068     */
00069     inline unsigned int     GetId()
00070     {
00071         return id;
00072     };
00073 
00074     //! Retourne l'ip.
00075     /*! Retourne l'ip de la connection.
00076         \return pointeur sur l'ip.
00077     */
00078     inline const char   *GetIp()
00079     {
00080         return ip.data();
00081     };
00082 
00083     //! Retourne le port.
00084     /*! Retourne le port de la connection.
00085         \return port de la connection.
00086     */
00087     inline unsigned int GetPort()
00088     {
00089         return port;
00090     };
00091 
00092     //! Retourne le buffer.
00093     /*! Retourne le buffer de données \a Buffer.
00094         \return Pointeur sur le buffer.
00095     */
00096     inline const char   *GetBuffer()
00097     {
00098         return buffer;
00099     };
00100 
00101     //! Retourne la taille buffer.
00102     /*! Retourne la taille buffer de données \a Buffer.
00103         \return Taille du buffer \a BufferSize.
00104     */
00105     inline unsigned int     GetBufferSize()
00106     {
00107         return bufferSize;
00108     };
00109 
00110     //! Envoie des données binaire.
00111     /*! Envoie des données binaire à \a iP.
00112         \param pBuffer données
00113         \param iSize Taille des données
00114     */
00115     void    BinSend(const char *pBuffer, unsigned int iSize);
00116 
00117     //! Envoie les données.
00118     /*! Envoie les données à \a Ip.
00119         \param pBuffer chaine construite comme pour printf.
00120         \param ... argument pour construire la chaine
00121     */
00122     void    Send(const char *pBuffer, ...);
00123 
00124     //! Recoit les données.
00125     /*! Recoit les données \a Buffer depuis \a Ip.
00126     */
00127     void    Receive();
00128 };
00129 
00130 
00131 #endif

Généré le Thu Jun 12 09:12:30 2008 pour A.I.F. par  doxygen 1.3.9.1