#ifndef _LOGIN_SERVER_INFO_ #define _LOGIN_SERVER_INFO_ #include #include #include #pragma pack(1) // ----------------------------------------------------------------------------- // ¼­¹ö Á¤º¸ °ü·Ã ±¸Á¶Ã¼µé typedef union SERVER_ID* LPSERVER_ID; union SERVER_ID { enum Zone { ZONE1 = 1, ZONE2 = 2, BATTLE_GROUND = 3 }; typedef struct SID* LPSID; struct SID { char Type; char Group; char Channel; char ID; }; SID sID; DWORD dwID; // 2002-12-24 cppis °¡ Ãß°¡ inline char GetChannel(void) { return sID.Channel; } inline char GetZone(void) { return sID.ID; } }; typedef struct SERVER* LPSERVER_GROUP; struct SERVER_GROUP { enum { CHANNEL_NUM = 2, SERVER_NAME = 15 }; char m_Group; // ¼­¹ö ±×·ì char m_Name[SERVER_NAME]; // ¼­¹ö À̸§ unsigned short m_ChannelNum; // ä³Î ¼ýÀÚ long m_ClientNum[CHANNEL_NUM]; // Á¢¼Ó ÀÚ ¼ö }; typedef struct SERVER* LPSERVER_LIST; struct SERVER_LIST { enum { SERVER_NUM = 10 }; unsigned short m_ServerNum; // ¼­¹ö ¼ýÀÚ SERVER_GROUP m_ServerGroup[SERVER_NUM]; // ¼­¹ö ±×·ì }; #pragma pack() typedef struct RylServerInfo* LPRylServerInfo; struct RylServerInfo { enum { GROUP_NAME_LENGTH = 120, PATCH_ADDRESS_LENGTH = 100 }; SERVER_ID m_ServerUID; IN_ADDR m_ServerAddress; unsigned long m_dwClientVer; unsigned long m_dwChecksum; size_t m_nGroupNameLen; size_t m_nPatchAddressLen; char m_szGroupName[GROUP_NAME_LENGTH]; char m_szPatchAddress[PATCH_ADDRESS_LENGTH]; unsigned short m_dwChannelClientNum[SERVER_GROUP::CHANNEL_NUM]; unsigned short m_usChannelNum; RylServerInfo::RylServerInfo() : m_dwClientVer(0), m_dwChecksum(0), m_nPatchAddressLen(0), m_usChannelNum(0) { m_ServerUID.dwID = 0; m_ServerAddress.S_un.S_addr = 0; m_szPatchAddress[0] = '\0'; strncpy(m_szGroupName, "UnKnown", GROUP_NAME_LENGTH); m_nGroupNameLen = strlen(m_szGroupName); std::fill_n(m_dwChannelClientNum, int(SERVER_GROUP::CHANNEL_NUM), 0); } }; #endif