?? datastruct.h
字號:
#pragma once
#include "DoubleList.h"
#define MAX_BUFFER 256
#define PORT 7000
typedef struct {
int Room;
int Desk;
SOCKET hHost;
SOCKET hClient;
char GameName[10];
char HostName[10];
char ClientName[10];
char HostMsg[MAX_BUFFER];
char ClientMsg[MAX_BUFFER];
int HostCount;
int ClientCount;
}GameInfo,*LPGameInfo;//用于保存游戲信息,每建立一個游戲創建一個
typedef struct {
int Room;
int Desk;
char Name[10];
SOCKET Sock;
}LoginInfo,Game;//登陸的消息內容,以及用于m_io_group中為每一個用戶保存信息
typedef struct {
char GameName[10];
}CreateInfo,JoinInfo;//創建和參加游戲的消息內容
typedef struct {
char GameName[10];
int player;
int numplayers;
}StartInfo;//開始游戲消息內容
typedef struct {
char Msg[MAX_BUFFER];
}MsgInfo;//游戲中發送信息的消息內容
typedef struct {
int MsgType;
int Size;
char Buffer[MAX_BUFFER];//消息內容,根據type不同代表不同的消息
}GameMsg;//發送的數據包結構
typedef struct
{
OVERLAPPED Overlapped;
WSABUF DataBuf;
CHAR Buffer[sizeof(GameMsg)];
//DWORD BytesSEND;
//DWORD BytesRECV;
Game gameinfo;
int type;
} PER_IO_OPERATION_DATA, * LPPER_IO_OPERATION_DATA;//完成端口的io結構
typedef struct
{
SOCKET Socket;
} PER_HANDLE_DATA, * LPPER_HANDLE_DATA;//完成端口的key結構
typedef CDoubleList<PER_IO_OPERATION_DATA, 10> IO_GROUP;
typedef CDoubleList<PER_HANDLE_DATA, 10> KEY_GROUP;
typedef IO_GROUP::ITERATOR IO_POS;
typedef KEY_GROUP::ITERATOR KEY_POS;
DWORD WINAPI ServerWorkerThread(LPVOID CompletionPortID);
int SendToClient(SOCKET sock,char *buf,int buflen,int nType,LPPER_IO_OPERATION_DATA pConText);
IO_GROUP m_io_group;//io結構的雙鏈表,保存所有sock的io結構
KEY_GROUP m_key_group;//key結構的雙鏈表
typedef CDoubleList<GameInfo, 10> GameInfo_GROUP;
typedef GameInfo_GROUP::ITERATOR GameInfo_POS;
GameInfo_GROUP gameInfo_group;//游戲的雙鏈表,每創建一個游戲分配一個空間
enum
{
IOCP_RECV,
IOCP_SEND
};//服務器端完成端口消息的類型
enum
{
GAME_STATE_LOGIN,
GAME_STATE_CREATE,
GAME_STATE_JOIN,
GAME_STATE_START,
GAME_STATE_MSG,
GAME_STATE_END,
SERVER_SUCCESS,
SERVER_FAIL,
GAME_STATE_EXIT
};//發送的數據包的類型
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -