@Progrimer

Работают два клиента одновременно и на client1 приходят данные, то client2 зависает, что не так?

from socket import socket,AF_INET,SOCK_STREAM
from threading import Thread
import time


def server_2():

    
    def inf():
        data=client2.recv(1024)
        with open('test.txt', 'wb') as f:
            f.write(data)


    client2=socket(AF_INET,SOCK_STREAM)
    client2.settimeout(240)
    client2.connect(('292.128.15.224',8566))
    while True:
        time.sleep(5)
        text=client2.recv(1024).decode('utf-8')
        print(text)
        inf()


thread=Thread(target=server_2)
thread.daemon=True
thread.start()
server1=True
while server1:
    time.sleep(5)
    client1=socket(AF_INET,SOCK_STREAM)
    client1.settimeout(240)
    client1.connect(('292.128.15.224', 8564))
    text=client1.recv(1024).decode('utf-8')
    print(text)


Что не так? Проблема: когда работают два клиента одновременно и на client1 приходят данные, то client2 зависает на приеме информации в функции inf() и больше уже не отвисает
  • Вопрос задан
  • 73 просмотра
Пригласить эксперта
Ответы на вопрос 1
AshBlade
@AshBlade
Просто хочу быть счастливым
Скорее всего сервер отправляет единственный пакет данных, который меньше 1024 байт.
Вот и получается, что ты дважды читаешь из сокета, но все данные уже получаешь при первом вызове и блокируешься навсегда.

В случае 1 клиента, то ты постоянно читаешь очередной чанк и устанавливаешь новое соединение. Попробуй убрать

text=client2.recv(1024).decode('utf-8')
print(text)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы