Wie mache ich einen einfachen Python-Echo-Server, der sich an Clients erinnert und keinen neuen Socket für jede Anfrage erstellt? Muss den gleichzeitigen Zugriff unterstützen können. Ich möchte in der Lage sein, einmal eine Verbindung herzustellen und kontinuierlich Daten zu senden und zu empfangen, die diesen Client oder ähnliches verwenden:Wie man einen einfachen Multithread-Socket-Server in Python erstellt, der sich an Clients erinnert
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. mit dem Server auf Port 50000 ausgeführt wird, die über Client verwenden möchte ich dies in der Lage sein zu tun:
[email protected]:~$ client.py
Server hostname or ip? localhost
Server Port? 50000
message: testa
response: testa
message: testb
response: testb
message: testc
response: testc
Ich fand diese interessante, kurze Frage ist die Zeile self.sock.listen (5) verantwortlich für die Anzahl der zulässigen Verbindungen? Also im Grunde kann ich 5 Kunden auf einmal akzeptieren, aber nicht mehr oder wofür sind die 5 gut? – Kev1n91
@ Kev1n91 Die 5 ist das Rückstandsargument, das angibt, wie viele Verbindungen in die Warteschlange gestellt werden können und darauf warten, akzeptiert zu werden. Erklärt in der Dokumentation hier: https://docs.python.org/2/library/socket.html#socket.socket.listen – nettux443
'Traceback (letzten Anruf zuletzt): Datei" E: /myProto/threadedserver.py ", Zeile 36, in ThreadedServer ('', port_num) .listen() Datei" E: /myProto/threadedserver.py ", Zeile 10, in __init__ self.sock.bind ((self.host, self .port)) TypeError: eine ganze Zahl ist erforderlich (bekam Typ str) ' –