libevent のドキュメントに関しては、このサイトが優れていることがわかりました。eventsを扱うページには、さまざまなイベント フラグが実際に何を意味するかについての概要があります。そのリンクから:
EV_READ : このフラグは、提供されたファイル記述子の読み取り準備が整ったときにアクティブになるイベントを示します。
EV_WRITE : このフラグは、提供されたファイル記述子が書き込み可能になるとアクティブになるイベントを示します。
EV_SIGNAL : シグナル検出の実装に使用されます。
EV_PERSIST : イベントが永続的であることを示します。
EV_ET : 基になる event_base バックエンドがエッジ トリガー イベントをサポートしている場合、イベントをエッジ トリガーにする必要があることを示します。これは、EV_READ と EV_WRITE のセマンティクスに影響します。
したがって、あなたの質問に明確に答えるには: EV_READ は、ソケットまたは bufferevent からデータを読み取れるようにすることに対応します。これは、私が知る限り、libevent ソケットに相当します。EV_WRITE は、データを書き込む準備ができているソケット/バッファ イベントに対応します。読み取り/書き込みコールバックを設定して、cb
引数を使用して実際にデータの読み取りと書き込みを行うことができます
struct event *event_new(struct event_base *base, evutil_socket_t fd,
short what, event_callback_fn cb, void *arg);
ただし、libevent を使用してソケット IO を実行している場合は、バッファー イベントの使用を検討することをお勧めします。これは、私のプロジェクトの 1 つである snot_mon で使用しているもので、github で確認できます。