問題タブ [epoll]
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.
c++ - Linux での Epoll に関するガイドをいくつかお勧めしてもらえますか
Epoll On Linux System について知りたいです。
epoll ライブラリに関するお勧めのマニュアルやガイドを教えてください。
より詳細なガイドが必要です。いくつかの例がある方が良いです。
助けて。読んでいただきありがとうございます。
windows - Windows での epoll/kqueue/select の最適な同等物は何ですか?
Windows の最高の I/O イベント通知機能は何ですか?
せいぜい私は何かを意味します...
- 入力ファイル記述子の数に制限はありません
- すべてのファイル記述子 (ディスク ファイル、ソケットなど) で動作します。
- さまざまな通知モードを提供 (エッジ トリガー、リミット トリガー)
select - Boost Message Queue not based on POSIX message queue? Impossible to select(2)?
I thought I'd use Boost.Interprocess's Message Queue in place of sockets for communication within one host. But after digging into it, it seems that this library for some reason eschews the POSIX message queue facility (which my Linux system supports), and instead is implemented on top of POSIX shared memory. The interface is similar enough that you might not guess this right away, but it seems to be the case.
The downside for me is that shared memory obtained via shm_open(3)
does not appear to be usable with select(2)
, as opposed to POSIX message queues obtained via mq_open(3)
.
It seems like Boost's library loses in this case. Does anyone understand know why this should be? Even if it POSIX message queues are only available on some systems, I'd expect Boost to use that facility where it is available, and reimplement it only where necessary. Is there some pitfall of the POSIX system which I do not yet recognize?
python - Pythonでepollがクライアント側のクローズを検出する方法は?
これが私のサーバーです
クライアント側の入力
サーバー側出力
クライアントが接続を閉じた後でも、epoll が recv をポーリングしてイベントを送信できるのは奇妙です! EPOLLERR イベントが発生しないのはなぜですか? EPOLLHUP を使用する場合も同様です。
EPOLLERR イベントは、閉じた接続を書き込もうとしたときにのみ発生することに気付きました。これ以外に、接続が閉じられたかどうかを確認する別の方法はありますか?
EPOLLIN イベントで何も得られない場合、接続を閉じたものとして扱うのは正しいですか?
linux - 反対側が書き込みを行って閉じたときに、epoll 制御のノンブロッキング ソケットでバイトが失われる
私は現在サブスクライブしているノンブロッキングソケットを持っています:
いくつかの EPOLLIN を受信し、EAGAIN までノンブロッキングで読み取り、次に HUP と RDHUP を受信します。さらに数バイトを読み取ることもあります。
反対側は次のとおりです。
epollin と close 時間の両方のイベント ループで直接 msg_peek を使用して recv を試しました。
ソケットをノンブロッキングにするか、送信とクローズの間でクライアントに sleep(1) を入れると問題なく動作します。
epollに関連するよりも、ノンブロッキングソケットの問題に思えます。「nc -l -p port」のような単純なもので、適切な量のバイトを受け取ります。
linux - 接続が確立されているかどうかを検出する
最近、Linux でのネットワーク プログラミングの学習を始めましたが、リモート ホストへの接続が確立されているかどうかを検出する正しい方法がわかりません。ATM 確立されていないすべての接続は、epoll インスタンスに登録されます。EPOLLOUT フラグが 1 に設定されたイベントが到着すると、接続は確立済みとしてマークされます。これと同じくらい簡単ですが、私はこれを正しくやっています...
これを行うより良い方法はありますか?そうでない場合、ソケットが書き込み可能になるのを待つことは、接続が確立されたことを保証する良い方法ですか?
linux - 単一のイベントループでAIOとepollをどのように一緒に使用しますか?
AIOとepollを1つのイベントループに組み合わせるにはどうすればよいですか?
グーグルは2002年と2003年からそれらを統合することについて多くの話を見つけますが、何かが起こったかどうか、またはそれが可能かどうかは不明です。
誰かがaio信号にeventfdを使用してepollループで自分自身をロールバックしましたか?
linux - 受け入れる/epollの問題
epoll を使用するこのコードがあり、問題があります。実行すると、次のような出力が得られます: Server-socket() is OK... Server-bind() is OK... 3 4 accept: Invalid argument
限られたユーザーとルートの両方として、システムが更新されたubuntu Linuxで実行しています。受け入れる入力の何が問題になっていますか? 何を変更すればよいですか?
linux - 送信機能をブロックできますか
チャット プログラムを作成していますが、サーバーに対してデータを送信するときに、send() 関数がデータを送信するのに時間がかかることがありますか?
ここに私の問題があります: 私は Linux 2.6 を epoll で使用しています。サーバーはシングルスレッドです send() がブロックされると、サーバー上の他のすべてのアクティビティが停止します。たとえば、tcp パケットに対して ACK 応答を長時間送信しない非常に遅いクライアントがある場合、送信機能はすぐに移動するか、クライアントを長時間待機します。私が望んでいないのは、単一または少数の遅いクライアントがチャット サーバーで遅延を引き起こすことです。
私が欲しいのは、 send() を非ブロックにして、非常に迅速に返すことです。すべてのデータが送信されない場合は、送信された量が返されるだけで、それをバッファから削除し、すべてのデータが送信されるまで次回のサービスで送信を続けます。基本的に、低速または応答のないクライアントで長時間送信をブロックしたくありません。