XMLRPC は難しいのかと思えば、
smallp2p
など参考にすると意外に易しいのかも。
鯖立てるのは下記のようなコード
server.py
でとりあえず可能でした。
#!/usr/bin/env python
from SimpleXMLRPCServer import SimpleXMLRPCServer
import sys, socket
class RPCMethods:
def next(self, s=''):
print 'received:', s
return 0
def main():
sv = SimpleXMLRPCServer((socket.gethostname(), int(sys.argv[1])))
sv.register_instance(RPCMethods())
sv.serve_forever()
if __name__ == "__main__":
main()
起動は
$ python server.py <ポート番号>
一方クライアント側のコード client.py はもっと簡単、
#!/usr/bin/env python
import sys, xmlrpclib
def main():
peer = xmlrpclib.ServerProxy('http://' + sys.argv[1])
s = raw_input('>>')
while s:
peer.next(unicode(s, 'euc_jp'))
s = raw_input('>>')
if __name__ == "__main__":
main()
下記コマンドで起動します。
$ python crient.py <鯖のURL:ポート番号>
双方向にすれば、チャットのようなソフトができあがります。
たとえば将棋盤にくっつければ即P2P将棋が出来るはずです。
Zope鯖に組み込んでも面白そう。
Python のすごさを実感しました。
技術的にはありふれたもので、他所かに載ってそうなコードですが、
これは
BBS での会話
の証拠のつもり。今の仕事を早く終わらせて、作ってみたいなーと現実から逃れてます。
コメントはありません