Я использую сокеты Python для подключения более 50 клиентов к серверу для передачи изображений.Я использую беспроводную сеть для их подключения.Одна проблема, с которой я столкнулся, заключается в том, что, если какое-то время нет связи, скажем, 10 минут, программное обеспечение прерывается.В противном случае он работает нормально.
Вот метод отправки на стороне клиента:
f = open(fullpath, "rb")
filesize = str(os.path.getsize(fullpath))
s.send(filesize.encode('utf-8'))
while True:
data = f.read(512)
if not data:
break
s.send(data)
f.close()
print("Finished sending image to server")
output("Finished sending image to server")
А вот метод получения на стороне сервера:
client[0].send(str.encode("start"))
data = client[0].recv(1024).decode('utf-8')
filesize = int(data)
f = open(filenames[count], "wb")
currentSize = 0
while currentSize < filesize:
data = client[0].recv(512)
if not data:
break
if len(data) + currentSize > filesize:
data = data[:filesize-currentSize]
f.write(data)
currentSize += len(data)
f.close()
Вкл.на стороне клиента я получаю сообщение об ошибке: [Errno 32] Broken pipe.На стороне сервера я получаю сообщение об ошибке: кодек utf-8 не может декодировать байт 0xff в позиции 0: недопустимый начальный байт.Ошибка происходит, когда клиент отправляет размер файла.
Есть ли ошибка в моем коде?Могу ли я, чтобы сервер и клиенты постоянно отправляли туда и обратно строки, чтобы поддерживать соединение?