XML-RPCでデータベース利用

1月6日の日記の郵便番号検索プログラムを参考にする。昨日の西暦-元号対応リスト(gengo.txt)をサーバスクリプトと同じディレクトリに保存しておく。
Pythonで。

元号取得サーバ(gengoServer.py)
import sys
import string
import SimpleXMLRPCServer
year={}
class ServProc :
 def setServ(self,host,port) :
  obj=gengoServ()
  server=SimpleXMLRPCServer.SimpleXMLRPCServer((host,int(port)))
  server.register_instance(obj)
  print 'Listen on '+port
  server.serve_forever()
class gengoServ :
 def echoGengo(self,key) :
  gengo=year[key]
  return gengo
 def setGengo(self) :
  f=open("gengo.txt","r");
  lines=f.readlines()
  for line in lines:
   x=string.split(line,",");
   year[x[0]]=x[1]
  f.close()
if __name__=='__main__' :
 if len(sys.argv)==3 :
  gen=gengoServ()
  gen.setGengo()
  ser=ServProc()
  ser.setServ(sys.argv[1],sys.argv[2])
 else :
  print ">python gengoServer <host_name> <port_number>"

使用例:
>python gengoServer 192.168.254.2 10000
Listen on 10000
元号取得クライアント(gengoClient.py)
import sys
import xmlrpclib
class CliProc :
 def setCli(self,host,port) :
  server=xmlrpclib.ServerProxy("http://"+host+":"+port)
  print "Input Dominical Year(593-2005)> ",
  line=sys.stdin.readline()
  year=line.strip()
  gengo=server.echoGengo(year)
  print gengo
if __name__=='__main__' :
 if len(sys.argv)==3 :
  cli=CliProc()
  cli.setCli(sys.argv[1],sys.argv[2])
 else :
  print "python gengoClient <host_name> <port number>"

使用例:
>python gengoClient.py 192.168.254.2 10000
Input Dominical Year(593-2005)> 2000
平成12年

西暦-元号対応リストはUTF-8で保存しておかないと、XML文字コードUTF-8なのでエラーが出ます。
XML-RPC is 楽過ぎ便利過ぎ。柔らかいというか、HACKというか。C言語でもXML-RPC for C and C++: Descriptionで使えるわけだし。
世間ではblog周りで浸透しているXML-RPCですが、考えれば考えるほど幅が出てくる。スルメのようだ。