/*************************************************************************** BaseSocket ( Base Socket Class ) ----------------------------------------- begin : 2010/03/02 copyright : (C) 2005 SolutionBox Inc. author : Service 1 Team email : svc1@solbox.com version : 1.0 CopyRight(C) 2005 SolutionBox Inc. All Rights reserved. Redistribution and use in source and binary forms, with or with out modification, are not permitted in outside of SolutionBox Inc. ***************************************************************************/ #ifndef __LIBRARY_BASE_SOCKET_H__ #define __LIBRARY_BASE_SOCKET_H__ #include #include #include #include "Logger.h" #define SOCKET_NOT_VALID -1 #define DEFAULT_DATA_RECEIVE_TIMEOUT 15 // sec class CBaseSocket { protected: /// @brief socket descriptor int m_sock; /// @brief socket ÀÇ ¿¬°á»óÅÂÀÎÁö ¿©ºÎ¸¦ ÀúÀåÇϱâ À§ÇÑ º¯¼ö. bool m_bConnected; public: /// @brief »ý¼ºÀÚ. CBaseSocket( const int & socket ); /// @brief ¼Ò¸êÀÚ. ~CBaseSocket(); /// @brief ¼ÒÄÏÀÇ Close 󸮸¦ ¼öÇàÇÔ. void Close(void); /// @brief Àü´Þ¹ÞÀº Target À¸·Î Socket Á¢¼ÓÀ» ¼öÇà /// @param szTarget [in] Á¢¼Ó ´ë»ó Host name ¶Ç´Â IP /// @param nPort [in] Á¢¼Ó Port /// @return Á¢¼Ó ¼º°ø½Ã true, ½ÇÆÐ½Ã false ¹Ýȯ. ( ¿À·ù ³»¿ªÀº ·Î±ë󸮵Ê.) bool Connect( const std::string& szTarget, int nPort ); /// @brief ¸â¹ö º¯¼öÀÎ m_sock ÀÌ À¯È¿ÇÏ°í ¿¬°áµÈ »óÅÂÀÎ °æ¿ì true ¹Ýȯ. /// @return socketÀÌ À¯È¿ÇÏÁö ¾Ê°Å³ª ¿¬°áÀÌ ²÷¾îÁö °æ¿ì false ¹Ýȯ, ±×¿Ü¿¡´Â true ¹Ýȯ. bool IsValidSocket(void); /// @brief ¸â¹öº¯¼öÀÎ socket ÀÇ Á¢¼Ó »óÅ ¿©ºÎ¸¦ ¼³Á¤Çϱâ À§ÇÑ ÇÔ¼ö. void SetConnectionStatus( bool bConnected) { m_bConnected = bConnected; } /// @brief ÇöÀç socket ÀÇ Á¢¼Ó »óŸ¦ ¹Ýȯ. bool GetConnectionStatus( void) { return m_bConnected; } //void SetLogger( Logger * pLog ) { m_pLog = pLog; } protected: /// @brief m_sock ·Î ºÎÅÍ ÁöÁ¤µÈ size ¸¸Å­ µ¥ÀÌÅÍ read ¸¦ ½Ãµµ ( read ÇÔ¼ö¿Í µ¿ÀÏ ) /// @param vptr [out] Read µÈ µ¥ÀÌÅ͸¦ ÀúÀåÇϱâ À§ÇÑ º¯¼ö¿¡ ´ëÇÑ Æ÷ÀÎÅÍ. /// @param size [in] read ÇϰíÀÚ ÇÏ´Â µ¥ÀÌÅÍÀÇ Å©±â. /// @return read µÈ µ¥ÀÌÅÍÀÇ Å©±â. 0: fd closed, -1: ¿À·ù ssize_t Read( void * vptr, size_t size ); /// @brief m_sock ·ÎºÎÅÍ ÁöÁ¤µÈ size ¸¸Å­ read ¸¦ ½Ãµµ, \n ///< ¸¸¾à ÁöÁ¤µÈ Å©±â¸¸Å­ µ¥ÀÌÅͰ¡ Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì ÇØ´ç Å©±â¸¸Å­ µ¥ÀÌÅ͸¦ read ÇÒ¶§±îÁö ´ë±â. /// @param vptr [out] Read µÈ µ¥ÀÌÅ͸¦ ÀúÀåÇϱâ À§ÇÑ º¯¼ö¿¡ ´ëÇÑ Æ÷ÀÎÅÍ. /// @param size [in] read ÇϰíÀÚ ÇÏ´Â µ¥ÀÌÅÍÀÇ Å©±â. /// @return read µÈ µ¥ÀÌÅÍÀÇ Å©±â. 0: fd closed, -1: ¿À·ù ssize_t ReadN( void * vptr, size_t size ); /// @brief m_sock ·ÎºÎÅÍ ÁöÁ¤µÈ size ¸¸Å­ read ¸¦ ½Ãµµ, \n ///< ¸¸¾à ÁöÁ¤µÈ Å©±â¸¸Å­ µ¥ÀÌÅͰ¡ Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì ÇØ´ç Å©±â¸¸Å­ µ¥ÀÌÅ͸¦ read ÇÒ¶§±îÁö ´ë±â. \n ///< ¶Ç´Â ÁöÁ¤µÈ Timeout °ª µ¿¾È read ¸¦ ÇÏÁö ¸øÇÏ´Â °æ¿ì ¿À·ù ó¸®. /// @param vptr [out] Read µÈ µ¥ÀÌÅ͸¦ ÀúÀåÇϱâ À§ÇÑ º¯¼ö¿¡ ´ëÇÑ Æ÷ÀÎÅÍ. /// @param size [in] read ÇϰíÀÚ ÇÏ´Â µ¥ÀÌÅÍÀÇ Å©±â. /// @param timeout [in] Timeout value (sec) /// @return read µÈ µ¥ÀÌÅÍÀÇ Å©±â. 0: fd closed, -1: ¿À·ù, -2: Timeout ssize_t ReadNTimeout( void * vptr, size_t size, int timeout = DEFAULT_DATA_RECEIVE_TIMEOUT ); /// @brief m_sock ·ÎºÎÅÍ ÁöÁ¤µÈ size ¸¸Å­ read ¸¦ ½Ãµµ, \n ///< ¸¸¾à ÁöÁ¤µÈ Å©±â¸¸Å­ µ¥ÀÌÅͰ¡ Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì ÇØ´ç Å©±â¸¸Å­ µ¥ÀÌÅ͸¦ read ÇÒ¶§±îÁö ´ë±â. \n ///< ¶Ç´Â ÁöÁ¤µÈ Timeout °ª µ¿¾È read ¸¦ ÇÏÁö ¸øÇÏ´Â °æ¿ì ¿À·ù ó¸®. ///< º» ÇÔ¼ö´Â Socket »ó¿¡ ÀÌ¹Ì Data °¡ Á¸ÀçÇÏ´Â °æ¿ì¿¡¸¸ »ç¿ë. /// @param vptr [out] Read µÈ µ¥ÀÌÅ͸¦ ÀúÀåÇϱâ À§ÇÑ º¯¼ö¿¡ ´ëÇÑ Æ÷ÀÎÅÍ. /// @param size [in] read ÇϰíÀÚ ÇÏ´Â µ¥ÀÌÅÍÀÇ Å©±â. /// @param timeout [in] Timeout value (sec) /// @return read µÈ µ¥ÀÌÅÍÀÇ Å©±â. 0: fd closed, -1: ¿À·ù, -2: Timeout ssize_t ReadNTimeout2( void * vptr, size_t size, int timeout = DEFAULT_DATA_RECEIVE_TIMEOUT ); public: /// @brief m_sock À¸·Î ÁöÁ¤µÈ Å©±â¸¸Å­ vptr ÀÇ µ¥ÀÌÅ͸¦ Àü¼Û ½Ãµµ.\n ///< Send Timeout ¿É¼Ç ¼³Á¤À¸·Î Write Timeout ¼³Á¤ °¡´É. \n ///< ÁöÁ¤µÈ Ƚ¼ö¸¸Å­ ÀçÀü¼Û ½ÇÆÐ½Ã ¿À·ù·Î ó¸®ÇÔ. /// @param vptr [in] Àü´ÞÇÒ µ¥ÀÌÅ͸¦ ÀúÀåÇÑ º¯¼ö¿¡ ´ëÇÑ Æ÷ÀÎÅÍ. /// @param size [in] write ÇϰíÀÚ ÇÏ´Â µ¥ÀÌÅÍÀÇ Å©±â. /// @return write µÈ µ¥ÀÌÅÍÀÇ Å©±â. 0: fd closed, -1: ¿À·ù ssize_t WriteN( const void * vptr, size_t size ); protected: /// @brief ¹®ÀÚ¿­·Î Àü´Þ¹ÞÀº Á¤º¸¸¦ °Ë»çÇÏ¿© IP Á¢¼Ó Á¤º¸¸¦ »ý¼ºÇÑ´Ù. unsigned int ConversionAddr( const char * name ); }; #endif /* __LIBRARY_BASE_SOCKET_H__ */