Я настроил python клиента и сервер с сокетом в Python, который позволяет серверу отправлять текст клиенту, и я пытался расширить его, чтобы изображения могли быть отправлены клиенту .
Код сервера:
import socket
#setup and bind server socket
s_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#setup socket
s_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)#reuses same port (allows reconnection)
s_socket.bind(('192.168.178.52', 9001))
s_socket.listen(1)
#connects and prints clients data and send message
clientsocket, address = s_socket.accept()
print('Connection from {}'.format(address))
clientsocket.send(bytes('Welcome to the server', 'utf-8'))
#Loops for server to sent text data to client
while True:
m = input('Enter')
try:
file = open(m, 'rb')
b = file.read(2048)
clientsocket.send(b)
except:
clientsocket.send(bytes(m, 'utf-8'))
Код клиента:
import socket
import webbrowser
import os
import pyautogui
#setup and bind client socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.connect(('----------', 9001))#ip swapped for post
while True:
message = s.recv(2048)#recieves all messages sent with buffer size
if message:
txt = str(message)
with open('plswork.png', 'wb') as file:
file.write(message)
file.close()
Проблема, с которой я столкнулся, заключается в том, что он отправит файл и создаст его безупречно. , но только часть изображения загрузится, когда я открою его (см. изображение). Я почти уверен, что это как-то связано с размером буфера, однако, когда я его увеличиваю, он вообще не распознает файл, и я получу ошибка при попытке открыть фотографию (желательно, чтобы вы могли отправить большинство фотографий). Новое в python сокетах, поэтому любая помощь будет оценена!
(в данный момент пытается отправить пи c смокинга ...)
https://i.stack.imgur.com/lBblq.png