Я пытаюсь создать простой сокет-сервер в Python:Прием несколько клиентов в питоне сокет сервере
import socket
import threading
import time
def handle(conn_addr):
print("Someone Connected")
time.sleep(4)
print("And now I die")
host = ''
port = 5000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.bind((host,port))
except socket.error as e:
print(str(e))
s.listen(2)
while True:
threading.Thread(handle(s.accept())).start()
print("Should never be reached")
Сервер сокета должен принимать несколько клиентов одновременно. Я пытался проверить его функциональность с помощью вызова телнета Localhost 5000 из нескольких вкладок из моей оболочки, однако шаблон, который я получаю
Someone Connected
And now I die
Someone Connected
And now I die
Вместо
Someone Connected
Someone Connected
Someone Connected
я назвать команду TELNET в течение 4 секунд каждого другой, поэтому он должен иметь 2 сообщения подключенного в строке, однако сообщение возвращается только после отсоединения предыдущего сокета. Почему это и как я могу это исправить?
Вы печатаете инструкцию для штампа без закрытия розетки. Клиенты все равно должны быть подключены –
Но почему функция не печатает «кто-то связан», как только я подключаюсь к ней? Он всегда ждет, чтобы «умереть» было напечатано? – Bula
Насколько я могу судить, он должен печатать «подключен», а затем останавливаться на 4 секунды, а затем печатать «умереть» (даже если вы не закрываете сокет). Разве это не то, что происходит? –