LIBHV 实现TCP服务

本文介绍了如何在项目中预研并应用LIBHV库来实现TCP服务,重点在于自定义协议的处理,采用TLV格式,并通过表驱动法定义回调函数进行协议解析。编译过程在Ubuntu上简单快速。
摘要由CSDN通过智能技术生成

最近的项目上,用到了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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

heani

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值