1、使用回调函数
1.1声明回调函数
typedef void(*REC_RECV_REPORT_CALLBACK)(int flag , char *data);//flag: 0 socket连接断开 , 1 socket连接 ; *data 客户端发给指定服务端的数据
1.2 创建实例
REC_RECV_REPORT_CALLBACK m_sockCallBack;
1.3注册服务端的回调函数
用于被其他进程调用,详情见13.5
(1)xxx.h
int register_callback(REC_RECV_REPORT_CALLBACK callBackFun);
(2)xxx.cpp
//注册回调函数
int register_callback(REC_RECV_REPORT_CALLBACK callBackFun)
{
int flag = 0;
if(callBackFun)
{
memcpy(&m_sockCallBack,&callBackFun,sizeof(callBackFun));
flag = 1;
}
return flag;
}
1.4 调用回调函数
//调用回调函数
if(m_sockCallBack)
{
m_sockCallBac(socket_connect,socketId_recv_buf);
}
else
{
printf(“The m_sockCallBack is NULL \n”);
}
1.5 调用注册回调函数
(1)定义被回调的函数
xxx.h:
static void myCallbackTest(int serSocketId,int cliSocketId,int val,char *str);
说明:必须使用static申明该函数
xxx.cpp:
void xxx::myCallbackTest(int val,char *str)
{
…
}
(2)调用注册回调函数
void xxx::init()
{
register_callback(myCallbackTest);
}
说明:以上1.1-1.4是由进程1调用,1.5由进程2调用