📄 iocrclient.h
字号:
/*********************************************************************
iocrClient(I/O Completion Routine Client)
Copyright (C) 2003.12.03 INU Corp. All Rights Reserved.
吝酶 涝免仿俊 Callback窃荐甫 捞侩茄 努扼捞攫飘 匙飘亏葛碘
累己磊: 炼悼泅(Cobby92@hotmail.com)
荐沥老: 2006.03.03
荐 沥: 炼悼泅(Cobby92@hotmail.com)
-檬扁拳
net_init(), net_setup(), net_startup()
-秦力
net_free()
-皋牢风橇
net_proc()
/*********************************************************************/
#ifndef __IOCRCLIENT_H
#define __IOCRCLIENT_H
#define NETLOG "./net_log%d.txt"
#define NET_MAXBUFSIZE 4096
//#define NET_SENDQSIZE 8 //SendQueueSize = max_sockcnt * NET_SENDQSIZE
#define NET_SENDQSIZE 200 //SendQueueSize = max_sockcnt * NET_SENDQSIZE
#define NET_RECVQSIZE 200 //RecvQueueSize = max_sockcnt * NET_RECVQSIZE
#define NET_CONTEXTQSIZE 416 //ContextQueueSize = max_sockcnt * NET_CONTEXTQSIZE
//(SendQueueSize + RecvQueueSize) * 2
#define NET_UNKNOWNHEADER 0xFFFFFFFF //NETHEADER啊 酒囱 庆歹肺 登绢乐绢 皋技瘤甫 盒籍且 荐 绝澜
//皋技瘤 勤甸矾俊辑 磊眉利栏肺 颇教 & 盒籍
#define NETID_ENCODE 0x7E //菩哦 蜡瓤己 眉农(庆歹狼 叼内爹捞 救等惑怕)
#define NETID_DECODE 0x7C //菩哦 蜡瓤己 眉农(庆歹狼 叼内爹捞 场抄惑怕)
#define NET_XORSEED 0x55 //xor mask
#define NET_BEAT_TIME 2800 //匙飘亏楷搬 蜡瓤眉农 埃拜 = 2.8檬
#define NET_PING_TIME 1000 //P2P 俏眉农 埃拜 = 1檬
#define MAIN(l) ((unsigned short)(l))
#define SUB(l) ((unsigned short)(((unsigned int)(l) >> 16) & 0xFFFF))
enum NET_FLAG{
NET_ADVANCED=0x00000000, //瘤盔登绰 酒虐咆媚甫 荤侩窍瘤 臼绰促
NET_COMMON=0x00000007, //PingPong, 菩哦焊救, 菩哦颇教 殿阑 荤侩茄促.
USE_NETHEADER=0x00000001, //泅犁狼 矫胶袍庆歹甫 荤侩窃栏肺结 扁夯利牢 扁瓷 器窃
USE_SECURITYPACK=0x00000002+USE_NETHEADER, //菩哦焊救 荤侩(肺拿辑滚埃俊绰 捞扁瓷捞 鞘夸绝澜)
USE_HEARTBEAT=0x00000004+USE_NETHEADER, //楷搬捞 谗板绰瘤 犬牢窍扁困茄 林扁利牢 菩哦傈价
USE_UDPSOCK=0x00000008, //UDP(C/S侩)
};
//匙飘亏 备悼 棺 秦力***********************
void net_init(int max_sockcnt, //弥措 努扼捞攫飘 家南
int max_peercnt, //弥措 Peer荐
int (*func_output)(const char *log, ...)); //叼滚彪皋技瘤 免仿窃荐
void net_setup(void (*func_connect)(int, char *, unsigned short, void *), //connect_callback(local_index, addr, port, arg)
void (*func_receive)(int, int, unsigned long, char *, unsigned long *, void *), //receive_callback(local_index, message, err_code, packet, size, arg)
void (*func_close)(int, bool, void *), //close_callback(local_index, normal_exit, arg)
void (*func_relay)(void *), //relay_setup_callback(io_context)
void (**func_etc)(void *), //thread_callback
void **param_etc, //thread_param
int cnt_etc); //thread_count
bool net_startup(unsigned short port_udp);
void net_free();
bool net_info(char *&addr, char *&domain);
//楷搬 棺 楷搬秦力***********************
bool net_connect(char *addr, unsigned short port_tcp, unsigned short port_udp, NET_FLAG flag, DWORD heartbeat, void *arg);
//(normal==true) 郴啊 狼档利栏肺 辑滚客 楷搬阑 谗澜
//(normal==false)厘局 棺 坷幅肺 牢秦 厚沥惑利栏肺 楷搬捞 谗辫
bool net_disconnect(int local_index, bool normal);
//犬厘Thread荤侩矫 捞亥飘惯积(ManualSet)****************
void net_setevent(int id, BOOL set);
//匙飘亏 单捞磐 贸府***********************
void net_proc();
//菩哦 傈价***********************
void p2p_reset(int peer_index); //秦寸 乔绢客狼 圈戚莫 傈俊 馆靛矫 檬扁拳秦具茄促
bool net_send(int local_index, void *context);
bool p2p_send(void *ioc, unsigned long addr, unsigned short port); //钮雷阑 公矫窍绊 官肺 歹固菩哦阑 焊辰促
void p2p_begincast(void *context);
bool p2p_broadcast(int peer_index, void *context);
bool p2p_broadrelay(int peer_index, void *ioc, unsigned long addr, unsigned short port);
void p2p_endcast(void *context);
bool p2p_ping(int peer_index);
//副饭捞 辑滚荤侩***********************
bool p2p_relayset(unsigned long addr, unsigned short port,
short server_index, short server_userindex,
short target_server_index, short target_server_userindex,
short target_server_peerindex);
bool p2p_relay(void *ioc, unsigned long addr, unsigned short port);
//菩哦 积己***********************
void *net_message(unsigned int msg); //菩哦庆歹 积己(main_op)
void *net_message(unsigned short main, unsigned short sub); //菩哦庆歹 积己(main_op, sub_op)
void *udp_message(int server_index, unsigned long msg); //udp侩 菩哦庆歹 积己(辑滚俊辑 且寸罐篮 client牢郸胶, main_op)
void *udp_message(int server_index, unsigned short main, unsigned short sub); //udp侩 菩哦庆歹 积己(辑滚俊辑 且寸罐篮 client牢郸胶, main_op, sub_op)
void *p2p_message(int peer_index, unsigned long msg); //p2p侩 菩哦庆歹 积己(辑滚俊辑 且寸罐篮 peer牢郸胶, main_op)
void *p2p_message(int peer_index, unsigned short main, unsigned short sub); //p2p侩 菩哦庆歹 积己(辑滚俊辑 且寸罐篮 peer牢郸胶, main_op, sub_op)
bool net_writedata(void *context, char *data, int size); //菩哦 单捞磐 静扁(角力肺绰 net_packet窃荐 荤侩)
void net_readdata(char **packet, char *data, int size); //菩哦 单捞磐 佬扁(角力肺绰 net_data窃荐 荤侩)
template<class type>
bool net_packet(void *context, type *data, int count) //菩哦 单捞磐 静扁
{
if(count < 1) return false;
return net_writedata(context, (char *)data, sizeof(type)*count);
}
template<class type>
bool net_data(char **packet, type *data, int count) //菩哦 单捞磐 佬扁
{
if(count < 1) return false;
net_readdata(packet, (char *)data, sizeof(type)*count);
return true;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -