ホームページ >バックエンド開発 >Python チュートリアル >Python Police and Thieves の実装の 1 つ: クライアント/サーバー通信の例
この記事の例は、Python Police と Thieves の実装の 1 つであるクライアント/サーバー通信について説明しており、参考のために共有されています。具体的なメソッド分析は次のとおりです。
この例は、ISCC 2012 クラッキング レベル 4 の質問からのものです
目的は、警察と通信できる警察を逆転させて窃盗を実現することです
これは実際に RSA 暗号化通信の例であり、上記の泥棒と警察の機能を独自のクライアントとサーバーを作成して実装しています。
通信するために、今回はまずネットワークに接続できるクライアントとサーバーをPythonで書きます。
サーバーコードは次のとおりです:
#!/usr/bin/env python import SocketServer from time import ctime HOST = '127.0.0.1' PORT = 2012 ADDR = (HOST, PORT) class MyRequestHandler(SocketServer.BaseRequestHandler): def handle(self): print '...connected from...', self.client_address while True: self.request.sendall('[%s] %s' % (ctime(),self.request.recv(1024))) tcpServ = SocketServer.ThreadingTCPServer(ADDR, MyRequestHandler) print 'waiting for connection...' tcpServ.serve_forever()
クライアントコードは次のとおりです:
#!/usr/bin/env python from socket import * HOST = '127.0.0.1' PORT = 2012 BUFSIZ = 1024 ADDR = (HOST, PORT) tcpCliSock = socket(AF_INET, SOCK_STREAM) tcpCliSock.connect(ADDR) while True: data = raw_input('>>>>>>>>>>>>') if not data: break tcpCliSock.send('%s\r\n' % data) data = tcpCliSock.recv(BUFSIZ) if not data: break print data.strip() #tcpCliSock.close()
このコードについては、「Python コア プログラミング」を参照してください
Python errno 10053 エラーが報告された場合は、クライアントの接続コードがループの外にある必要があることを確認してください
つまり:
tcpCliSock = socket(AF_INET, SOCK_STREAM) tcpCliSock.connect(ADDR)
True の間は外に出てください。
次回は RSA 暗号化の問題を解決します。
この記事が皆さんの Python プログラミングに役立つことを願っています。