07libeventライブラリの下のBufferevent関連関数
以下是关于libevent学习的相关文章:
01 libeventライブラリのダウンロードとインストール、およびインストールが成功したかどうかのテスト02libeventライブラリ
の全体的なフレームワークの考え方03libevent
での通信の主な機能
04libeventライブラリでのfifoは通信ソケットとして使用されます05libevent
ライブラリでの保留中と非保留の解釈
06libeventでの通信でのバッファイベントのバッファリングエリア機能
はじめに07libeventライブラリ関連のbuffereventイベントの機能
08libeventライブラリ通信サーバーとクライアントの主な機能
09libeventライブラリサーバーとクライアントTCP通信プロセスとコード例
ヘッダーファイルは次のとおりです。
#include <event2/bufferevent.h>
1 buffereventイベントの作成buffereventもイベントであることに
注意してください。buffereventを作成するためのソケットとして、以下を理解することもできます。
struct bufferevent * bufferevent_socket_new(
struct event_base *base,
evutil_socket_t fd, //传入参数,绑定套接字在bufferevent内部
enum bufferevent_options options
);
// 参数options: 只需要记住BEV_OPT_CLOSE_ON_FREE 即可。代表 释放 bufferevent 时关闭底层传输端口
// 成功时返回bufferevent,失败则返回NULL
2buffereventイベントを破棄します
void bufferevent_free(struct bufferevent *bev);
3 buffereventのコールバック関数を設定します。これには、読み取りおよび書き込みイベントと例外イベントのコールバックが含まれます。
前の記事で明らかにしたように、コールバック関数を記述しても実際の効果はありません。
void bufferevent_setcb(
struct bufferevent *bufev,
bufferevent_data_cb readcb,//使用 bufferevent_read()读取buff中数据信息,自己封装
bufferevent_data_cb writecb,//写回调只是提示你发生出去数据,没有实质作用,一般用于打印信息或者直接置为NULL
bufferevent_event_cb eventcb, //异常回调
void *cbarg //三个回调函数的参数
);
//读写回调函数
typedef void (*bufferevent_data_cb)(
struct bufferevent *bev,
void *ctx //相当于cbarg
);
//异常回调函数
typedef void (*bufferevent_event_cb)(
struct bufferevent *bev,
short events,
void *ctx //相当于cbarg
);
//events参数:
// EV_EVENT_READING: 读操作时发生某事件,具体是哪种事件请看其他标志
// BEV_EVENT_WRITING:写操作时发生某事件,具体是哪种事件请看其他标志
// BEV_EVENT_ERROR: 操作时发生错误
// BEV_EVENT_TIMEOUT:发生超时
// BEV_EVENT_EOF: 遇到文件结束指示。
// BEV_EVENT_CONNECTED:请求的连接过程已经完成实现客户端的时候可以判断
//EVUTIL_SOCKET_ERROR():关于错误的更多信息
4 buffereventバッファをアクティブ状態または無効状態に設定するか、その状態を取得します
。buffereventバッファは読み取りと書き込みに分割されますが、新しく作成されたbuffereventバッファの読み取りバッファはデフォルトで無効になり、書き込みバッファはendableで有効になります。get関数を使用して、&を使用してbuffereventバッファの起動が無効な状態を取得できます。
//开启,可以调用该bufferevent事件回调
void bufferevent_enable(
struct bufferevent *bufev,
short events
);
//禁用, 对应的回调就不会被调用
void bufferevent_disable(
struct bufferevent *bufev,
short events
);
//获取缓冲区的状态
short bufferevent_get_enabled(
struct bufferevent *bufev
);
5 buffereventバッファーの読み取りと書き込みを行うための2つの関数は、通常、読み取りコールバック関数で呼び出されます。
//读数据函数,注意:bufferevent的读写缓冲区是由队列实现的,所以它相当于pop移除数据
size_t bufferevent_read(
struct bufferevent *bufev,
void *data,
size_t size
);
//写数据函数
int bufferevent_write(
struct bufferevent *bufev,
const void *data,
size_t size
);
この時点で、buffereventイベントの主な関連機能を学習しました。すべての人の怠惰に適応するために、各記事はできるだけ短くします。