P2Pで将棋(の準備)
2005年4月9日23:43
python

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 での会話 の証拠のつもり。今の仕事を早く終わらせて、作ってみたいなーと現実から逃れてます。


コメントはありません