16,216
社区成员
发帖
与我相关
我的任务
分享
#ifndef GETSERVERINFO_H
#define GETSERVERINFO_H
#include <QObject>
#include <QtNetwork/QTcpSocket>
#include <QStringList>
#include <httpget.h>
//=====================================================================================================
//WGM约战平台组队群聊系统.实现区域组队功能.获取玩家所在区域.玩家可以自己建立组队.队长踢人.解散等
//此代码为核心网络通信模块.基于QT代码[完整源码在我的博客里面]
//程序编程人员:Jason's.Alex QQ:531401335
//QT社区群:3855916
//日期:2012/01/14
//我会将WGM约战平台各个模块公开出来,整个平台用到了很多技术。我几乎花了半年的时间来开发这个平台,遗憾的我没有写开发文档,思路有点不清晰。虽然CS这个游戏落寞了。但是我们这些老菜鸟。希望能记起它说带来的美好
//=====================================================================================================
#define VERSION "1.2.1"
enum HostInfo//和主机通讯的消息
{
HT_INFO,//群组信息
HT_MESSAGE,//消息
HT_KICK,//踢出
HT_ADVERTISING,//广告
HT_MEMBER,//成员
HT_DISSOLVE,//解散
HT_QUIT,//退出
HT_CREATE,//创建
HT_LOGIN,//登入
HT_TEAMANNOUNCEMENT=100//创建团队广播
};
enum EnumChinaArea//中国各大地区分类
{
ECA_ALL,//全部
ECA_SOUTHWEST,//西南
ECA_NORTHWEST,//西北
ECA_SOUTH,//华南
ECA_CENTRAL,//华中
ECA_EAST,//华东
ECA_NORTH,//华北
ECA_NORTHEAST,//东北
};
class GetServerInfo : public QObject
{
Q_OBJECT
public:
explicit GetServerInfo(const QString &,const QString &,const QString &,QObject *parent = 0);
void ConnectToHost();//连接主机
void SendMessage(const QString &);//发送消息
void SendKick(const QString &);//发送KICK
void GetAdvertising();//获取广告
bool FilterArea(const QString local)const;//过滤区域
public slots:
void SendQuit();//发送退出信息
void Login();//登入消息
void SendCreateTeam(const QString &,const QString &,const quint8);//发送创建消息
void SendRefreshMember();//发送刷新成员信息
signals:
void EmitChangeAdvertising(const QPixmap &);
void EmitMessage(const QString &);
void EmitKick();
void EmitAnnouncement(const QString&);
void EmitRefreshMember(const QStringList &);
void EmitChangeWindowTitle(const QString &);
void EmitUpdateVersion(const QStringList &);
private slots:
void ReadMessgaeEvent();//读取消息时间
void ConnectFinish();//连接主机完成
void NetworkError(QAbstractSocket::SocketError);
private:
void ReadMessage(QDataStream &in);//读取消息
void ReadKick(QDataStream &in);//读取KICK
void ReadAdvertising(QDataStream &in);//读取广告
void ReadMember(QDataStream &in);
void ReadTeamInfo(QDataStream &in);//读取团队信息
void ReadLoginState(QDataStream &in);//读取登入状态
void SendServerDataType(HostInfo,const QStringList &list=QStringList());
const QStringList GetLocalAndCircuit(const QString &ip)const;//获取所在地区信息和线路信息
private:
QTcpSocket *tcpClient;
QString hostAddress;
QString userName;//用户名字
QString teamID;//团队ID
QString privilege;//权限
static QStringList filterChinaAreaList;//中国过滤区域列表
EnumChinaArea ChinaArea; //中国过滤的区域枚举值
HttpGet *webGet;//获取网页数据。进行分析取得ip地址信息
QString local,circuit;//地区和 线路
};
#endif // GETSERVERINFO_H