##
11.21.1 SimpleXMLRPCServer オブジェクト

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

`register_function`( | function[, name])

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

`register_instance`( | instance)

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

`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 div(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()