KirasiH
@KirasiH
Раньше было лучше

Проблема с передачей картинки в socket. Что не так?

Проблема с передачей картинки с сервера на клиент. Клиент отдаёт команду на установку картинки с определёным названием серверу, сервер проверяет наличие картинки и если она есть он её кодирует и передаёт клиенту, клиент раскодирует и записывает в папку.

клиент
import socket
import os
from threading import*

class Client():
    def __init__(self):
        self.client = socket.socket(
            socket.AF_INET,
            socket.SOCK_STREAM
        )

        self.client.connect(
            ("192.168.1.44",2235)
        )

        while True:
            self.data = self.client.recv(2048).decode("utf-8")
            self.data = str(self.data)
            print(self.data)
            
            self.input_c = Thread(target=self.input1)
            self.input_c.start()

    def input1(self):
        while True:
            self.command = input("Установить файл | отправить файл 1/2: ")
            
            if self.command == "1":
                self.file = input("имя файла: ")
                a = os.path.exists(self.file)
                
                if a == True:
                    print("Данный файл уже существует")
                    
                elif a == False:
                    self.file = "install|"+self.file
                    self.client.send(self.file.encode("utf-8"))
                    self.file_installion = open(self.file, "w")
                    
                    self.data_c = self.client.recv(2048).decode("utf-8")
                    
                    while self.data_c:
                        self.file_installion.write(self.data_c)
                        self.data_c = self.client.recv(2048).decode("utf-8")
                        
                    self.file_installion.close()
            

if __name__ == "__main__":
    client = Client()


сервер
import socket
from threading import*
import os

server = socket.socket(
    socket.AF_INET,
    socket.SOCK_STREAM
)

server.bind(
    ("192.168.1.44",2235)
)

server.listen()

def server_messeng(user):
    while True:
        data = user.recv(2048)
        data = data.decode("utf-8")
        data = data.split("|")
        a = os.path.exists(data[1])
        
        if (data[0] == "install") and (a==True):            
            file = open(data[1], "r")
            data = file.read(2048)
            while data:
                client.send(data)
                data = file.read(2048)
            file.close()
        else:
            print("none")

def server_st():
    while True:
        user, adress = server.accept()
        user.send("You connect my server".encode("utf-8"))

        server_ms = Thread(
            target=server_messeng,
            args=(user,)
        )
        
        server_ms.start()

server_st()
  • Вопрос задан
  • 33 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Вы бинарный файл открываете, как текстовый.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы