XML-RPC勉強中
http://www.donews.net/limodou/archive/2004/09/22/106517.aspxを見つけた。Pythonをかなりマスターしている中国の方の例です。他のページもすごく勉強になる。
XML-RPCとJavaのRMIとの決定的な違いは、XML-RPCはHTTPプロトコルを使用していて、RMIはJRMP(Java Remote Method Protocol)を使用している点で、だからこそXML-RPCは比較的容易に記述が出来る、という訳だ。
RMIは今の段階で、Sun自身も見放している、というか、IIOP(Internet Inter-ORB Protocol)を組み入れている。将来、他言語との連携を取りたいならばCORBAを選択すべきである、と言った方が良いのかもしれない。
クライアントからのメッセージを返すサーバ(xmlrpcMesServer.py) 01: import sys 02: import SimpleXMLRPCServer 03: class echoServ : 04: def sendEcho(self,str) : 05: return 'Serv>>'+str 06: class ServerProc : 07: def setServ(self,host,port) : 08: echoObj=echoServ() 09: server=SimpleXMLRPCServer.SimpleXMLRPCServer((host,int(port))) 10: server.register_instance(echoObj) 11: print 'Listen on '+port 12: server.serve_forever() 13: if __name__=='__main__' : 14: if len(sys.argv)==3 : 15: ser=ServerProc() 16: ser.setServ(sys.argv[1],sys.argv[2]) 17: else : 18: print "python xmlrpcMesServer.py <host_name> <port_number>" 例: >python xmlrpcMesServer.py localhost 10000 Listen on 10000
上のサーバにメッセージを送るクライアント(xmlrpcMesClient.py) 01: import sys 02: import xmlrpclib 03: class CliProc : 04: def setCli(self,host,port) : 05: print 'Cli>>' 06: line=sys.stdin.readline(); 07: server=xmlrpclib.ServerProxy("http://"+host+":"+port) 08: echo=server.sendEcho(line) 09: print echo 10: if __name__=='__main__' : 11: if len(sys.argv)==3 : 12: cli=CliProc() 13: cli.setCli(sys.argv[1],sys.argv[2]) 14: else : 15: print "python xmlrpcMesClient.py <host_name> <port number>" 例: >python xmlrpcMesClient.py localhost 10000 Cli>> This is TEST. #標準入力 Serv>>This is TEST. #サーバからのエコー
この程度ならすぐ作れる。さてと実用的なものを作ろう。学期末は試験やレポートがあったりして中々趣味に時間が掛けられそうに無いのが、来るべき問題と言えば問題。