📄 px_ss_module_cl.h
字号:
#ifndef _PX_SS_MODULE_CL_
#define _PX_SS_MODULE_CL_
/* must been first include begin */
#include "..\ProjectX_Common\ProjectX_Copyright.h"
#include "..\ProjectX_Common\ProjectX_Common.h"
/* must been first include end */
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#define STATE_PX_SS_CL_NO_INIT 0 //没有初始化
#define STATE_PX_SS_CL_FREE_USE 1 //可以被再使用,内部成员已经初始化
#define STATE_PX_SS_CL_CONNECTED 2 //刚连接上
#define STATE_PX_SS_CL_VERSION_CHECK 3 //处于版本检查阶段
#define STATE_PX_SS_CL_NORMAL_USE 4 //正常使用中,已经pass版本检查
#define STATE_PX_SS_CL_DISCONNECTED 5 //断开状态,原因不计
#define STATE_PX_SS_CL_REUSE_PROCESS 6 //处于重用时间消失中
#define STATE_PX_SS_CL_ERROR_FOUND 7 //有错误检测到
#define DEFAULT_PX_SS_CL_RECV_BUF_LEN 512
#define DEFAULT_PX_SS_CL_SEND_BUF_LEN 512
#define DEFAULT_PX_SS_CL_IOCP_BUF_LEN 512
typedef struct tagPx_SS_CL_Info {
CRITICAL_SECTION * cts_state;
CRITICAL_SECTION * cts_recv;
CRITICAL_SECTION * cts_send;
int size_recv_append;
int size_send_append;
int frame_heartbreak;
int heartbreak;
int frame_prev;
unsigned int ip;
u_short port;
byte state;
byte send_sign;
byte version_sign;
SOCKET s_client;
char * recv_buf;
char * precv_start;
char * precv_end;
char * precv_append;
char * send_buf;
char * psend_start;
char * psend_end;
char * psend_append;
}PX_SS_CL_INFO, * LPPX_SS_CL_INFO;
typedef struct tagPx_SS_CL_Per_Data {
PX_SS_CL_INFO * pcli;
}PX_SS_CL_PER_DATA, * LPPX_SS_CL_PER_DATA;
typedef struct tagPx_SS_CL_Io_Data {
OVERLAPPED overlapped;
char * buf;
int size;
byte io_type;
WSABUF wsabuf;
}PX_SS_CL_IO_DATA, * LPPX_SS_CL_IO_DATA;
typedef struct tagPx_SS_CL_Redirect {
PX_SS_CL_PER_DATA * per_data;
PX_SS_CL_IO_DATA * io_recv;
PX_SS_CL_IO_DATA * io_send;
}PX_SS_CL_REDIRECT, * LPPX_SS_CL_REDIRECT;
typedef struct tagPx_SS_CL_Key {
PX_SS_CL_REDIRECT * prdi;
byte state;
}PX_SS_CL_KEY, * LPPX_SS_CL_KEY;
typedef struct tagPx_SS_CL_Version {
char version[MAX_VERSION_LEN];
char md5code[MAX_MD5CODE_LEN];
char antihackcode[MAX_AHCODE_LEN];
BOOL accept;
}PX_SS_CL_VERSION, * LPPX_SS_CL_VERSION;
void init_module_cl(void);
void set_module_cl_state(byte state);
BOOL valid_module_cl_state(byte state);
BOOL valid_specify_cl_state(PX_SS_CL_INFO * pci,byte state);
BOOL init_cl_key_new(PX_SS_CL_KEY * pck);
BOOL init_cl_key_reuse(PX_SS_CL_KEY * pck);
BOOL close_specify_client(PX_SS_CL_INFO * pci);
void set_specify_cl_state(PX_SS_CL_INFO * pci,byte state);
void set_specify_cl_send_state(PX_SS_CL_INFO * pci,byte state);
void add_buf_to_specify_cl_recv_buf(PX_SS_CL_INFO * pci,int size,char * packet);
void add_buf_to_specify_cl_send_buf(PX_SS_CL_INFO * pci,int size,char * packet);
void update_specify_cl_send_buf(PX_SS_CL_INFO * pci,int size);
int get_specify_cl_send_buf(PX_SS_CL_INFO * pci, char * packet);
void tidy_specify_cl_recv_buf(PX_SS_CL_INFO * pci);
void tidy_specify_cl_send_buf(PX_SS_CL_INFO * pci);
void close_all_client(void);
void close_module_cl(void);
void free_module_cl_resource(void);
void handle_module_cl_recv_buf(void);
void handle_specify_cl_recv_buf(PX_SS_CL_INFO * pci);
void handle_module_cl_packet(PX_SS_CL_INFO * pci,WORD mc,WORD size,char * packet);
void handle_module_cl_heartbreak(void);
void handle_module_cl_reuse(void);
void send_all_cl_ss_need_close(void);
void module_cl_packet_request_connect(PX_SS_CL_INFO * pci,WORD size,char * packet);
void module_cl_packet_send_version(PX_SS_CL_INFO * pci,WORD size,char * packet);
void module_cl_packet_send_md5_code(PX_SS_CL_INFO * pci,WORD size,char * packet);
void module_cl_packet_send_specify_code(PX_SS_CL_INFO * pci,WORD size,char * packet);
void module_cl_packet_request_get_area_server_list(PX_SS_CL_INFO * pci,WORD size,char * packet);
void module_cl_packet_request_get_server_list(PX_SS_CL_INFO * pci,WORD size,char * packet);
void module_cl_packet_request_get_line_server_list(PX_SS_CL_INFO * pci,WORD size,char * packet);
void module_cl_packet_request_specify_line_server_address(PX_SS_CL_INFO * pci,WORD size,char * packet);
void module_cl_packet_send_heartbreak(PX_SS_CL_INFO * pci,WORD size,char * packet);
void module_cl_packet_request_disconnect(PX_SS_CL_INFO * pci,WORD size,char * packet);
void module_cl_packet_send_frame_counter(PX_SS_CL_INFO * pci,WORD size,char * packet);
DWORD WINAPI module_cl_accept_thread(PVOID paparm);
DWORD WINAPI module_cl_iocp_thread(PVOID paparm);
#endif //_PX_SS_MODULE_CL_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -