ホスト名の解決を行うために時間が掛かる。呼び出してサーバに接続するようにすべき。Windowsでも、同様の方法が推奨されている。シンプルにできるだろう。2000.10.8の日記を加筆。どれもこれもブロックする。ネットワーク越しのデータのやり取りは本質的に非同期なので、平行して入力がある場合、いちいちブロックするようにプログラムを書いてはいけない。GUIプログラムの場合は、ソケットをブロックしていたら、マウスのクリック、画面の再描画などを受け付けられず、フリーズしてしまう。ここでは、フレームワークが用意したコールバックの仕組みを使ってみる。どのようなフレームワークでも、ソケットに限らずさまざまな入力を捌く機構が用意されているので、それを使う。すれば、ソケットの入力を待ちながら画面を更新したりできるだろう。いう環境で試してみた。全体的にやっつけで作っているので、実用にしようと思うと、まだ考えるべきところが多いので注意。非同期I/OUNIXでは、ソケットに限らず、IOをブロックしないようにも設定できる。ソケットに限ると、fcntl()関数のF_SETFLコマンドでO_NONBLOCKフラグを設定できる。recv()関数は、ブロックせずに、すぐに返ってくるようになる。戻り値とエラーコードで状況を調べる必要がある。connect()関数もすぐに返ってくる。EINPROGRESSエラーコードを確認する。accept()も同様。listenキューが空でも、すぐに返ってる。EAGAINまたはEWOULDBLOCKエラー(この二つは同じ値かもしれないし、異なるかもしれない。