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ですが、考えれば考えるほど幅が出てくる。スルメのようだ。