Я использую свой серверный код, который, кажется, может отправлять изображения клиенту, однако похоже, что отправляется только один файл изображения, который полностью черный после открытия вручную. Более того, клиент получает ошибку при попытке отобразить полученные фотографии.
Я пытался преобразовать байты обратно в изображения, и это та часть, которая выдает мне ошибку.
import cv2 #SERVER
import time
import socket
import glob
import os
host = "127.0.0.1"
port = 5000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
s.listen(5)
print("server started...")
path1 = (r"C:\Users\Desktop\opencvpics")
def readFileImages():
st = os.path.join(path1, "*.png")
print(st)
return glob.glob(st)
list1 = readFileImages()
print(list1, "list1......")
print(type(list1))
while True:
c, addr = s.accept()
print(f"connection from {addr} has been established !")
c.send(bytes("welcome to the server".encode()))
for pics in list1:
f = open(pics, 'rb')
l = f.read(1024)
#while (l):
c.send(l)
print('Sent ', repr(l))
#l = f.read(1024)
f.close()
print(pics, "sdfasdfsadadfsafsas")
print(type(f),type(l))
print('Done sending')
c.send('Thank you for connecting'.encode())
import socket #CLIENT
from typing import Optional, Any
import cv2
from PIL import Image
import io
import pickle
host = "127.0.0.1"
port = 5000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.send('Hello server!'.encode())
with open('received_file.png', 'wb') as f:
print('file is open')
print('receiving data...')
data = s.recv(1024)
print('data=%s', data)
f.write(data)
print('Successfully get the files')
print('connection closed')
print(type(data))
print(len(data))
image = Image.open(io.BytesIO(data))
image.show()
s.close()
здесь ошибка, исходящая от клиента, но, пожалуйста, обратите вниманиечто мне пришлось сжать код здесь, чтобы соответствовать макету, поэтому строка 35 в этом сообщении об ошибке может соответствовать другой строке.
Traceback (most recent call last):
File "C:/Users/PycharmProjects/client-server/client.py", line 35, in <module>
image = Image.open(io.BytesIO(data))
File "C:\Users\PycharmProjects\client-server\venv\lib\site-packages\PIL\Image.py", line 2818, in open
raise IOError("cannot identify image file %r" % (filename if filename else fp))
OSError: cannot identify image file <_io.BytesIO object at 0x07D02330>