Eroare attributeerror __exit__ în Python cum să se stabilească
Sergey Gornostaev. soclu import, filetare, socketserver
# Creați un handler posturi de clasă
class ThreadedTCPRequestHandler (socketserver.BaseRequestHandler):
mâner def (auto):
date = str (self.request.recv (1024), 'utf-8')
cur_thread = threading.current_thread ()
răspuns = octeți ( "<>. <>“.format (cur_thread.name, date), 'utf-8')
self.request.sendall (răspuns)
class ThreadedTCPServer (socketserver.ThreadingMixIn, socketserver.TCPServer):
„“ „Serverul de streaming. Este suficient pentru a crea o clasă fără curaj“ „“
trece
# Creați un simplu „client“
client def (ip, port, messange):
cu socket.socket (socket.AF_INET, socket.SOCK_STREAM) ca ciorap:
sock.connect ((ip, port))
sock.sendall (bytes (messange, 'utf-8'))
răspuns = str (sock.recv (1024), 'utf-8')
imprimare ( „Serverul a răspuns: <>“.format (răspuns))
dacă __name__ == '__main__':
Port # 0 selectează automat un port neutilizat
HOST, PORT = "localhost", 0
Server = ThreadedTCPServer ((HOST, PORT), ThreadedTCPRequestHandler)
# Cu server:
ip, port = server.server_address
Imi pare rau ca am comentat cu, și cu o poate dori asta rula?
Vladimir. TCPServer sprijină protocolul de management al contextului incepand cu Python 3.6
Vă mulțumesc, ar trebui să încercați!
și ceea ce a făcut să-l faci cu?
Pavel Denisov: Sincer, îmi place doar „zahăr sintactică“)
Vladimir. și necugetat-l folosesc? Ei bine, aici, sugerează că există un 3.6 la TCPServer. Deci, e un lucru, dacă l-ai citit pe docuri sau în exemplele de văzut, iar celălalt - a intrat la întâmplare.