/////////////////////////////////////////////////////////////////////////////////////////////// // // SocketIO Class // // Last Update : 2002. 8. 28 // /////////////////////////////////////////////////////////////////////////////////////////////// #ifndef _SocketIO #define _SocketIO #include "Socket.h" #include // Àü¹æ ÂüÁ¶ class CXORCrypt; /////////////////////////////////////////////////////////////////////////////////////////////// // // »ó¼ö ¼³Á¤ // /////////////////////////////////////////////////////////////////////////////////////////////// const unsigned int BufferSize = 8192 * 100; /////////////////////////////////////////////////////////////////////////////////////////////// // // Ŭ·¡½º Á¤ÀÇ // /////////////////////////////////////////////////////////////////////////////////////////////// class SocketIO { private: ServerInfo::ServerState m_ServerState; unsigned long m_PacketCount; CXORCrypt& m_Crypt; public: SocketIO(void); virtual ~SocketIO(void); int Send(SOCKET Socket_In, WSABUF SendData_In); int SendTo(SOCKET Socket_In, SOCKADDR_IN Addreess_In, WSABUF SendData_In); int Recv(SOCKET Socket_In, WSABUF &RecvData_In); int RecvFrom(SOCKET Socket_In, WSABUF &RecvData_In, LPSOCKADDR_IN Address_Out); int PutRecvBufferToPtBuffer(char *pBuffer_Out, int BufferSize_In, WSABUF &RecvData_In, char *RecvBuffer_In, unsigned short PageVer_In, unsigned char PageNum_In); inline char* InsertPtCount(char *Buffer_In); inline unsigned long ExtractPtCount(char *Buffer_In); inline bool CheckServerState(); }; inline char* SocketIO::InsertPtCount(char *Buffer_In) { ((PktBase* )Buffer_In)->SetServerInfo(m_PacketCount); if(++m_PacketCount >= 0xFFFFFFF0) m_PacketCount = 0; return Buffer_In; } inline unsigned long SocketIO::ExtractPtCount(char *Buffer_In) { PktBase* lpBasePt = (PktBase* )Buffer_In; return lpBasePt->GetServerInfo(); } inline bool SocketIO::CheckServerState() { if(m_ServerState == ServerInfo::SS_SMOOTH) return true; else if(m_ServerState == ServerInfo::SS_LOADED) { Sleep(25); return true; } else if(m_ServerState == ServerInfo::SS_BUSY) { Sleep(100); return true; } else if(m_ServerState == ServerInfo::SS_VERYBUSY) { Sleep(300); return true; } return false; } #endif