ホームページ >バックエンド開発 >Python チュートリアル >Python Police and Thieves の実装の 1 つ: クライアント/サーバー通信の例

Python Police and Thieves の実装の 1 つ: クライアント/サーバー通信の例

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-16 08:41:141343ブラウズ

この記事の例は、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 プログラミングに役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。