首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

[分享]VC++获取CS服务器及玩家比分信息[完整代码],该如何解决

2012-01-15 
[分享]VC++获取CS服务器及玩家比分信息[完整代码]嘿嘿,之前抽空帮欢乐英雄CS社区的花花公子写了一个类似

[分享]VC++获取CS服务器及玩家比分信息[完整代码]
嘿嘿,之前抽空帮<欢乐英雄CS社区>的花花公子写了一个类似175PT的CS登录器!(有喜欢玩CS的朋友,可以去看看!)

在这之前也因为这个走了不少弯路,因为当初我也不知道VALVE游戏公司它有个官网专门介绍开发资料的,楞是全靠自己抓包分析这两条协议包,后面等我分析完了,结果另一个搞CS插件的朋友告诉我官方有公开的协议格式,杯催了!

反正代码不多,放出来大家参考参考!

下面是完整的VC代码 + 注释,运行效果如图所示:



主界面实际上只有三个函数,剩下的全在GlobalDefine.h/cpp里面,啥也不说了!自己看代码吧!

GlobalDefine.h

C/C++ code
//////////////////////////////////////////////////////////////////////////// 全局公共函数与结构体定义//// Parse两个函数请参考VALVE官方文档(部分字段暂未解析)// 参考文献: http://developer.valvesoftware.com/wiki/Server_Queries#Goldsource_servers_2//// My blog: http://blog.csdn.net/wangningyu// last modify by Koma 2011-06-28// 欢乐英雄CS社区 http://www.HappyHeros.com //// 感谢小米MM这段时间默默无闻的帮助与鼓励!#include <vector>#include <string>#include <map>#include <AFXINET.H>#include <WINSOCK2.H>#pragma comment(lib,"WS2_32.lib")#define SERVER_LIST_URL            _T("http://221.235.205.105/member/serverlist.txt")#define SESSION_NAME            _T("Koma and XiaoMi")#define BUF_SIZE                2048        // buffer size.#define SERVER_IP_SIZE            64#define SERVER_NAME_SIZE        128#define SERVER_DESCRIPT_SIZE    128#define SERVER_DEFAULT_SIZE        24#define USER_NAME_SIZE            64#define USER_DEFAULT_SCORE        (DWORD)0xFFFFFFFF#define USER_CONNECT_TIMELEN    20/*Description:    服务器当前状态信息下标Note:    Last edit by Koma 2011-04-23 0:20*/enum EnumServerHeader{    ESH_TYPE            = 0,    // m                盗版CS均为'm'    ESH_SERVER_IP        = 0,    // 127.0.0.1:27015  服务器IP    ESH_SERVER_NAME        = 1,    // [欢乐英雄]       服务器名称    ESH_CURRENT_MAP     = 2,    // de_dust2         当前地图    ESH_GAME_DIRECTORY  = 3,    // cstrike          当前目录    ESH_GMAE_DESCRIPT   = 4,    // [QQ群]           服务器描述     ESH_USER_COUNT      = 5,    // 1E-1F            玩家数量30/31    ESH_BOT_COUNT        = 6,    // 2F                BOT数量    ESH_DESICATED        = 7,    // 64                'l' for listen, 'd' for dedicated, 'p' for SourceTV     ESH_OS                = 8,    // 77                主机操作系统 'l' for Linux, 'w' for Windows     ESH_PASSWORD        = 9,    // 00                是否有密码    ESH_VAC_PROTECT        = 10,    // 01                是否VAC保护};/*Description:    服务器当前状态信息    1、服务器名称    2、当前地图    3、玩家数量......  (该结构体与上面EnumServerHeader相对应.)  Note:  Last edit by Koma 2011-05-03*/typedef struct tagServerHeader{    char    m_cType;    char    m_szServerIP[SERVER_DEFAULT_SIZE];    char    m_szServerName[SERVER_NAME_SIZE];    char    m_szServerMap[SERVER_DEFAULT_SIZE];    char    m_szGameDir[SERVER_DEFAULT_SIZE];    char    m_szGanmeDescript[SERVER_DESCRIPT_SIZE];    char    m_cSteamID;    char    m_cUserCurent;    char    m_cUserMax;    char    m_cBotCount;    char    m_cDesicated;    char    m_cOS;    char    m_cHasPassword;    char    m_cHasVAC;}ServerHeader;/*Description:    WEB后台的服务器列表    1、服务器IP    2、服务器端口    (该结构体与上面EnumServerHeader相对应.)Note:    Last edit by Koma 2011-05-03*/typedef struct tagServerIPandPort{    char    m_szIP[SERVER_IP_SIZE];    int        m_nPort;}ServerIPandPort;typedef std::vector<ServerIPandPort> ServerListPtr;/*Description:    服务器玩家比分    1、服务器IP    2、服务器端口    (该结构体与上面EnumServerHeader相对应.)Note:  Last edit by Koma 2011-05-03*/typedef struct tagUserInfo{    char    m_szUserName[USER_NAME_SIZE];    int        m_nKiller;    int        m_nTime;}UserInfo;typedef std::vector<UserInfo> UserInfoListPtr;// 全局函数声明BOOL    GetServerHeaderInfo(char *pszIP,int nPort,ServerHeader & serInfo);BOOL    GetServerListInfo(char *pszUrl,ServerListPtr *srvList);BOOL    GetServerPlayerInfo(char *pszIP,int nPort,UserInfoListPtr & userInfo);void    ParseUserPackets(char *pszRecv,int nLen,UserInfoListPtr & userinfo);void    ParseServerPackets(char *pszRecv,int nLen,ServerHeader & servinfo);BOOL    SetSocketTimeout(SOCKET &s, int nTime, BOOL bRecv);char*    UTF8toMB(const char* inUtf8, char* outStr);char*    ConvertIntToChar(int dwTemp);int        ConvertCharToInt(char* pszBuffer);// end of file GlobalDefine.h////////////////////////////////////////////////////////////////////////// 



完整源代码下载


[解决办法]
很不错啊,强烈支持
部长应该推荐一下哦
[解决办法]

[解决办法]
支持一下
[解决办法]
mark
[解决办法]
顶一下吧
[解决办法]
不错~~~牛B
[解决办法]
顶,顶,顶!
[解决办法]
支持,强烈支持
[解决办法]
顶下哈
[解决办法]
很久木有玩过CS了。。。
[解决办法]
N久不搞这个东西了,记得官方有类似的源码下载的.
[解决办法]
很好,很强大
[解决办法]
支持个 ~~
[解决办法]
有分,哈哈
[解决办法]
很强大啊,顶了
[解决办法]
强大,学习了。。。
[解决办法]
强大,学习

[解决办法]
支持一个分享的通知~
[解决办法]
没运行效果图呀、
[解决办法]
顶了学习

[解决办法]
学习学习
[解决办法]

[解决办法]
新手啊 看着有点深奥
[解决办法]
果断是很经典的啊
[解决办法]
唉, CS_KZ要把没自觉信的我给毁了

唉。
[解决办法]
刚开始学习vc++,学习了。
[解决办法]
悠嘻 。。。。。。。

热点排行