07libeventライブラリの下のBufferevent関連関数

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イベントの主な関連機能を学習しました。すべての人の怠惰に適応するために、各記事はできるだけ短くします。

おすすめ

転載: blog.csdn.net/weixin_44517656/article/details/108763067