最近的项目上,用到了LIBHV,特此预研了一下,接下来在项目上把它利用起来。
git clone https://github.com/ithewei/libhv.git
cd libhv
./configure
make
编译很简单,在ubuntu上很快就编译好啦。
自定义协议
使用经典的TLV格式,定义如下:
typedef struct FRAME_HEAD
{
int magic;
uchar rsv[8];
int msg_len;
}FRAME_HEAD;
typedef struct DATA_TLV
{
int tlvTag;
int tlvLen;
char data[0];
}DATA_TLV;
typedef struct FRAME_BUF
{
FRAME_HEAD_S stHead;
DATA_TLV_S stTLV;
uchar aucData[8192];
}FRAME_BUF;
协议处理
使用表驱动法定义回调函数
typedef int (*CMD_MSG_CALLBACK)(uchar *msg, uint len);
typedef enum
{
CMD_BEG,
CMD_PING,
CMD_PONG,
CMD_NONE
}CMD_MS