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