##
11.21.1 SimpleXMLRPCServer オブジェクト

`SimpleXMLRPCServer` クラスは `SocketServer.TCPServer` のサブクラスで、基本的なスタンドアロンの XML-RPC サーバーを作成する手段を提供します。

`register_function`( | function[, name])

  XML-RPCリクエストに応じる関数を登録します。引数nameが与えられている場合はその値が、関数functionに関連付けられます。これが与えられない場合は`function.__name__`の値が用いられます。引数nameは通常の文字列でもユニコード文字列でも良く、Pythonで識別子として正しくない文字(" . "ピリオドなど )を含んでいても。

`register_instance`( | instance[, allow_dotted_names])

  オブジェクトを登録し、そのオブジェクトの`register_function()`で登録されていないメソッドを公開します。もし、instanceがメソッド`_dispatch()`を定義していれば、`_dispatch()`が、リクエストされたメソッド名とパラメータの組を引数として呼び出されます。そして、`_dispatch()`の返り値が結果としてクライアントに返されます。もし、instanceがメソッド`_dispatch()`を定義していなければ、リクエストされたメソッド名がそのインスタンスに定義されているメソッド名から探されます。オプションの allow_dotted_names 引数が真で、インスタンスに `_dispatch()` メソッドがなければ、リクエストされたメソッド名がピリオドを含む場合は、（訳注：通常のPythonでのピリオドの解釈と同様に）階層的にオブジェクトを探索します。そして、そこで見つかったオブジェクトをリクエストから渡された引数で呼び出し、その返り値をクライアントに返します。

  警告: allow_dotted_names オプションを有効にすると、侵入者が あなたの作成したモジュールのグローバル変数にアクセスできるように なり、あなたのマシンで任意のコードを実行できてしまう可能性が あります。このオプションはセキュアで閉じたネットワーク内でのみ 使うようにしてください。

  バージョン2.3.5, 2.4.1 以降で変更された 仕様: セキュリティホールを切り離せるように allow_dotted_names を追加しました。以前のバージョンは 安全ではありません。

`register_introspection_functions`( | )

  XML-RPC のイントロスペクション関数、`system.listMethods`、`system.methodHelp`、`system.methodSignature` を登録します。 バージョン2.3 以降で新規追加された 仕様です。

`register_multicall_functions`( | )

  XML-RPC における複数の要求を処理する関数 system.multicall を登録します。

以下に例を示します。

    class MyFuncs:
        def div(self, x, y) : return x // y

    server = SimpleXMLRPCServer(("localhost", 8000))
    server.register_function(pow)
    server.register_function(lambda x,y: x+y, 'add')
    server.register_introspection_functions()
    server.register_instance(MyFuncs())
    server.serve_forever()