問題タブ [libevent]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
353 参照

c++ - libevent:初期化されていない構造体ポインタ

コードに構造体ポインタがあります

ここで、構造体にいくつかの情報を入力する関数を呼び出します。

この行でセグメンテーション違反が発生します。これを行う正しい方法は何でしょうか。ありがとう

0 投票する
2 に答える
717 参照

c++ - libevent:ヘッダーインクルードをオーバーライドする方法

私はこれを私のコードに含めています

これには、libeventのヘッダーファイルevent.hが含まれているはずです。しかし、インクルードされたファイルのリストを見ると、このヘッダーファイルが含まれています

msvcコンパイラにlibeventsevent.hヘッダーファイルをロードするように指示するにはどうすればよいですか?。ありがとう

0 投票する
1 に答える
65 参照

libevent - Windows で正しいシステム パスを取得する方法

libevent を使用して単純な http サーバーを作成しました。リソース(私の場合はフォルダー)にアクセスする方法は

リソースへのパスは、デコードされた url を使用して抽出されます。リクエストは次のようなものになるため、Linuxでは正常に動作します

しかし、window$ リクエストでは

/c:/users/vickey/folderとしてデコードされた URL になります。問題を修正するために先頭のスラッシュを手動で削除することができます。ただし、コードでブースト ライブラリを使用および学習しているので、この種の実装があるかどうか疑問に思っていました。native() と relative_path() を使ってみました。ありがとう。

0 投票する
2 に答える
1319 参照

sockets - Libevent の保留中のイベントとアクティブなイベントの違いは何ですか?

Libevent の使い方を学んでいます。保留とアクティブの違いがわかりません。私の意見では、event_base にイベントが追加され、イベントが発生していない場合、保留状態になります。呼び出し側が待ち受けているイベントが起きて、それでアクティブな状態になっているのですが、 の説明を読むとevent_pending、コードが吹き飛ばされているのを見て、イベントが保留されているときに、の内部状態を変更するのは悪いと書かれていますそれ、ここでの「保留中」という言葉は誤解だと思いますが、「event_active」のはずです....私は間違っていますか?

0 投票する
1 に答える
623 参照

c - libeventを使用したCでのTCPポートイベントコールバック

簡単に言うと、Cでミックスネットを実装しています。これを行うために、TCPポートのセクション(たとえば31001-31008)をリッスンし、それらのポートでデータを受信して​​配置するいくつかの個別のデーモンを作成しています。バッファ(たとえば、TCPポート31002-> char * data [2])に入れ、最終的に、別のポートセット(たとえば、51001-51008)のデータをリスト内の次のデーモンに書き込みます。

それが邪魔にならないので、これが私の混乱です!私はここや他の場所で多くのことを読み、これを達成する最も簡単な方法はlibevent2を使用することであると判断しました。私は基本的にこれから始めています(ページの下部): http: //www.wangafu.net/~nickm/libevent-book/Ref8_listener.html ...ただし、1つではなく8つのポートを開いています。

質問:マニュアルを読みましたが、データがどのポートからのものであるかを判断する方法について少し混乱しています。たとえば、ポート31004でデータを受信した場合、それをdata[4]に書き込むことを知りたいです。

開いているポートごとに異なるコールバックを作成することを考えましたが、それは醜いものになります。もっと簡単な方法はありますか?

これが私が達成しようとしていることのいくつかの疑似コードです、提案をしてください!私もPythonのようなものでこれを行うことを検討しましたが、Pythonにはイベントに関して同じ問題があるようです。

0 投票する
1 に答える
1056 参照

c - 構造体の配列 - 配列の要素型が不完全です (C)

これは簡単に修正できる問題のようですが、私は何か間違っています。同様のスレッドをすべて調べましたが、問題を解決するものは何も見つかりませんでした。

基本的に: C プログラムで、bufferevents の配列を作成しようとしています。

コンパイルしようとすると (WITH -levent、追加する可能性があります)、次のエラーが発生します。

src/mix/mix1.c:57:34: error: array type has incomplete element type

何か案は?:(

注: main の外側で bufferevents を定義して、コード内のどこからでもアクセスできるようにしています。このエリアには他にも #define があります。

0 投票する
1 に答える
358 参照

c - Libevent に登録されたイベントを変更するには?

私はこのようにlibeventを使用します、

m_event のイベントの変更方法が分からないのですが、公式マニュアルには操作するインターフェースがないようで、このようにしてみましたが、コアダンプが発生してしまいます。

event_assign でコア ダンプが発生します。助けてください...構造体イベントの登録済みイベントを変更するにはどうすればよいですか?

0 投票する
1 に答える
1030 参照

c - Libevent:EV_READを一時的に無効にしてから再度有効にする方法は?(Cで)

一連のポートでのデータ受信を処理するためにlibeventを使用しています。私が達成したい動作はこれです:

-ポートのセット、1001-1004があるとします。-1001などのポートでデータを読み込みます。-コールバックがヒットしたらすぐに、このポート(1001)でそれ以上の読み取りを無効にします。-すべてのポートがデータを受信したら、読み取りのためにすべてをオンに戻します。

今、私はbuffereventsの構造体を持っています:

ドキュメントに示されているようにリスナーを設定しました。

それから私はそれにREADコールバックを与えました:

私の「ハンドル」関数で、これを行うように指示しました。

そして最後に...

私が間違っていることについて何か考えはありますか?ランダムなポートにデータを送信した場合でも、さらに多くのデータを送信できます。
TIA!

0 投票する
2 に答える
927 参照

events - epoll/libevent/libev は UDT で動作しますか?

何万ものアクティブなソケットを処理する必要がある高同時実行サーバーを構築しています。最初に epoll を使用してイベントベースのサーバーを構築しましたが、適度な規模 (数千のアクティブなソケット) でうまく機能しました。しかし、同時実行数が 10,000 ソケットを超えると不安定になるようです。libevent(または libev) は成熟したプロジェクトであり、「何万ものアクティブなソケットを処理できる」と主張しているため、私は libevent(または libev) について検討しています。

「信頼できるUDP」であり、オーバーヘッドとメモリ使用量のためにTCPに問題が発生し始めているため、UDTの使用も考えています。したがって、イベント フレームワークとして libevent を使用し、送信プロトコルとして UDT を使用するのが自然な考えです。UDT が独自の一連の epoll 操作を提供していることは知っています。通常の Linux epoll では動作しないということですか? その場合、libevent や libev は Linux epoll に基づいて構築されているため、動作しません。

UDT と epoll/libevent/libev の両方で作業した人はいますか? UDT はそれらのいずれとも連携できますか?

どんな助けでも大歓迎です。ありがとう。

0 投票する
0 に答える
676 参照

libevent - bufferevent_socket_connect中にエラーが発生した場合にイベントハンドラーでピアアドレスを取得する方法は?

bufferevent_socket_connect 中にエラーが発生した場合に、イベント ハンドラーでピアのアドレスを出力する方法が見つかりませんでした。誰でも助けることができますか?

私が試したこと:

  1. 接続が確立されていないため、bufferevent_getfd() で getpeername() を使用すると失敗する

  2. イベント ハンドラの最後のパラメータでピアのアドレスを送信することも失敗します。これは、別のピアへの次の接続試行でこのポインタが変更されるためです。

コード例: