Come posso creare un semplice server echo Python che ricordi i client e non crei un nuovo socket per ogni richiesta? Deve essere in grado di supportare l'accesso simultaneo. Voglio essere in grado di connettermi una volta e inviare e ricevere continuamente dati utilizzando questo client o simili:Come creare un semplice server socket multithread in Python che ricordi i client
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = raw_input("Server hostname or ip? ")
port = input("Server port? ")
sock.connect((host,port))
while True:
data = raw_input("message: ")
sock.send(data)
print "response: ", sock.recv(1024)
I.e. con il server in esecuzione sulla porta 50000, utilizzando il client di cui sopra che voglio essere in grado di fare questo:
[email protected]:~$ client.py
Server hostname or ip? localhost
Server Port? 50000
message: testa
response: testa
message: testb
response: testb
message: testc
response: testc
Ho trovato questa interessante, breve domanda è la linea self.sock.listen (5) responsabile della quantità di connessioni consentite? Quindi in pratica posso accettare 5 client contemporaneamente ma non di più o a cosa serve il 5? – Kev1n91
@ Kev1n91 Il 5 è l'argomento del backlog che specifica quante connessioni possono essere accodate in attesa di essere accettate. Spiegato nei documenti qui: https://docs.python.org/2/library/socket.html#socket.socket.listen – nettux443
'Traceback (ultima chiamata ultima): File" E: /myProto/threadedserver.py ", riga 36, in ThreadedServer ('', port_num) .listen() File" E: /myProto/threadedserver.py ", riga 10, in __init__ self.sock.bind ((self.host, self .port)) TipoErrore: è richiesto un numero intero (ottenuto il tipo str) ' –