## 2 Serverオブジェクト

`fileno`( | )

  サーバが要求待ちを行っているソケットのファイル記述子を整数で返します。 この関数は一般的に、同じプロセス中の複数のサーバを監視できるように するために、 `select.select()` に渡されます。

`handle_request`( | )

  単一の要求を処理します。この関数は以下のメソッド: `get_request()`、 `verify_request()`、および `process_request()` を順番に呼び出します。 ハンドラ中でユーザによって提供された `handle()` が例外 を送出した場合、サーバの `handle_error()` メソッドが 呼び出されます。

`serve_forever`( | )

  無限個の要求を処理します。この関数は単に無限ループ内で `handle_request()` を呼び出します。

`address_family`
  サーバのソケットが属しているプロトコルファミリです。 取りえる値は `socket.AF_INET` および `socket.AF_UNIX` です。

`RequestHandlerClass`
  ユーザが提供する要求処理クラスです; 要求ごとにこのクラスのインスタンス が生成されます。

`server_address`
  サーバが要求待ちを行うアドレスです。アドレスの形式はプロトコルファミリ によって異なります。詳細は `socket` モジュールを参照してください。 インターネットプロトコルでは、この値は例えば`('127.0.0.1', 80)`の ようにアドレスを与える文字列と整数のポート番号を含むタプルです。

`socket`
  サーバが入力の要求待ちを行うためのソケットオブジェクトです。

サーバクラスは以下のクラス変数をサポートします:

`allow_reuse_address`
  サーバがアドレスの再使用を許すかどうかを示す値です。この値は標準 で `False` で、サブクラスで再使用ポリシを変更するために 設定することができます。

`request_queue_size`
  要求待ち行列 (queue) のサイズです。単一の要求を処理するのに長時間 かかる場合には、サーバが処理中に届いた要求は最大 `request_queue_size` 個まで待ち行列に置かれます。 待ち行列が一杯になると、それ以降のクライアントからの要求は ``接続拒否 (Connection denied)'' エラーになります。標準の値は 通常 5 ですが、この値はサブクラスで上書きすることができます。

`socket_type`
  サーバが使うソケットの型です; 取りえる値は 2 つで、 `socket.SOCK_STREAM` と `socket.SOCK_DGRAM` です。

`TCPServer` のような基底クラスのサブクラスで上書きできる サーバメソッドは多数あります; これらのメソッドはサーバオブジェクトの 外部のユーザにとっては役にたたないものです。

`finish_request`( | )

  `RequestHandlerClass` をインスタンス化し、`handle()` メソッドを呼び出して、実際に要求を処理します。

`get_request`( | )

  ソケットから要求を受理して、 クライアントとの通信に使われる 新しい ソケットオブジェクト、およびクライアントのアドレスからなる、 2 要素のタプルを返します。

`handle_error`( | request, client_address)

  この関数は `RequestHandlerClass` の `handle()` メソッドが例外を送出した際に呼び出されます。標準の動作では 標準出力へトレースバックを出力し、後続する要求を継続して処理します。

`process_request`( | request, client_address)

  `finish_request()` を呼び出して、`RequestHandlerClass` のインスタンスを生成します。必要なら、この関数から 新たなプロセスかスレッドを生成して要求を処理することができます; その処理は `ForkingMixIn` または `ThreadingMixIn` クラスが行います。

`server_activate`( | )

  サーバのコンストラクタによって呼び出され、サーバを活動状態に します。デフォルトではサーバのソケットを `listen` するだけです。 このメソッドは上書きできます。

`server_bind`( | )

  サーバのコンストラクタによって呼び出され、適切なアドレスにソケットを バインドします。 このメソッドは上書きできます。

`verify_request`( | request, client_address)

  ブール値を返さなければなりません; 値が`True`の場合には要求が処理され、 `False`の場合には要求は拒否されます。 サーバへのアクセス制御を実装するためにこの関数を上書きすることが できます。標準の実装では常に`True`を返します。