タグ

selectに関するsillowのブックマーク (3)

  • Geekなぺーじ : selectを使う

    普通の状態では、readやrecvfromはデータが受信できるまでブロッキングします。 ソケットを一つしか利用していない場合にはブロッキングは非常に便利なのですが、ソケットが複数になると困ってしまいます。 複数のソケットを扱うとき、片方のソケットでブロッキングしたままになってしまうと他のソケットにデータが到着しても受信が出来なくなってしまいます。 そのため、複数のソケットを扱っていると、どのソケットからデータが受信可能か知りたくなります。 ブロッキングとは、関数が返ってこない事を表します。 例えば、readはデータを受信して関数が戻ってきます。 言い方を変えると、データを受信するまでブロックしています。 readやrecvfromをブロッキングしないノンブロッキング方式で使う事も可能ですが、ここではブロッキング方式のまま使う方法を説明します。 そのような機能を提供するのがselectです。

  • Unix Programming Frequently Asked Questions 日本語訳 - 2 一般ファイル操作 (パイプとソケットを含む)

    Sockets FAQも参照して下さい。次のところにあります: http://www.lcg.org/sock-faq/ 訳注: 日語訳は次のところにあります: http://www.kt.rim.or.jp/~ksk/sock-faq/indexj.html 2.1 複数のコネクションを扱うにはどうすればいいですか? 複数の (ファイルディスクリプタ/接続/ストリーム)を同時に監視しなければなりません。 これら全てを扱うにはどうすればいいですか? select()やpoll()を使います。 注意: select()はBSDで導入され、poll()はSysV STREAMSから生まれました。 ですから互換性の問題があります。純粋なBSDシステムは今だpoll()を備えてい ないかも知れませんし、古いSVR3システムはselect()を持っていないこともある でしょう。SVR4ではsele

  • selectを使う(タイムアウト付き):Geekなぺーじ

    selectを使うサンプルコード(タイムアウト付き) 下記サンプルコードでは、UDPソケットを2つ作成しています。 作成した2つのUDPソケットは、selectに登録してselectはブロッキング状態に入ります。 UDPソケットにデータが到着するとrecvを行い、受信した内容を表示します。 以前のサンプルとこのサンプルの違いは、タイムアウトを設定している事です。 このサンプルでは、selectの4つめの引数はNULLではなくstruct timevalへのポインタを渡しています。 struct timevalには、10秒を表す値を代入してあります。 このサンプルでは、selectは最大10秒までしかブロッキングしません。 selectがブロッキングを開始してから10秒の時間が経過するとselectは0を返して終了します。 select以後のif文では、selectの返り値が0であればwhi

  • 1