⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datastruct.h

📁 由本人编写的一个完成端口测试程序
💻 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 + -