2016-07-19 3 views
0

私は1週間epollを使ってチャットのためのサーバーとクライアントを作ろうとしていました。私はこのネットワーキングのもので初心者なのであまりにも苦労しています。私はこのコードで終わった。 (注:今のところtelnetで私のサーバに接続しています):http://textuploader.com/5e0tsすべてのEpoll fdsにデータを送信するには?

epollインスタンスのすべての登録済みfdsにどのようにデータを送信するのですか?私はメインループのループ内でこれを実行しようとしていますが、動作しません。

+0

こんにちは、質問に直接問題を示す最小限のコード例を含めてください。詳細はこちら:http://stackoverflow.com/help/mcve – gavv

+0

これは初めてのことですが、コードのどの部分が問題の原因かわかりません。私はそれを最小化することはできません。 – wackyburkay

答えて

0

登録されたすべてのFDがEPOLLINイベントを待っていることを確認する必要があります。そうであれば、ループ内のFDにデータを送信するときに、特定のFDを「起動」してデータを受信することができます。

何がやりたいことは放送ですが、epoll_wait関数はブロッキング関数であり、あなたがスレッドプールを使用しない限りepollモデルのみ、1でイベント1を処理することができますので、あなたは、nonblocking IOを使用する必要があります。

実際にはEPOLLOUTイベントを使用してこのタスクを完了して、epollループ内ではなく、epollの助けを借りて1つずつFDにデータを送信することもできます。

関連する問題