ошибка с сокетом не получает файл клиента - %% EOF xref - PullRequest
0 голосов
/ 09 февраля 2019

Я делаю базовый сервер в Python и сокеты.

Этот сервер может получать текст и отправлять файлы.

Когда сообщение, которое приходит на сервер, является файлом,он возвращает файл uno.pdf, и здесь возникает ошибка, потому что клиент не получает файл, и отображается следующая ошибка:

введите описание изображения здесь

server.py

import socket

ip = "0.0.0.0"
puerto = 8081
data = (ip,puerto)
conexiones = 10

socketServidor = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
socketServidor.bind(data)
socketServidor.listen(conexiones)

print("esperando conexiones")
cliente,direccion = socketServidor.accept()
print("conexion establecida")

archivo = open("uno.pdf","rb")
contenido = archivo.read(1024)

while True:
    datos = cliente.recv(1024).decode()
    print(datos)
    if datos == "exit":
        cliente.sendall("exit".encode())
        break
    elif datos == "archivo":
        while contenido:
            cliente.send(contenido)
            contenido = archivo.read(1024)
        archivo.close()
    elif datos == "recibido":
        cliente.sendall("ok".encode())

    cliente.sendall("recibido".encode())
print("conexion cerrada")
socketServidor.close()

client.py

import socket

ipServidor = "192.168.8.3"
puertoServidor = 8081

cliente = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
cliente.connect((ipServidor,puertoServidor))
print("conectado con servidor")

archivo = open("uno.pdf","wb")

while True:
    msg = input("> ")
    cliente.sendall(msg.encode())
    try:
        respuesta = cliente.recv(4096).decode()
        print(respuesta)
        if respuesta == "exit":
            break
    except:
        print("no es texto")
        input_data = cliente.recv(1024)
        if len(input_data)==0:
            print("completo")
        archivo.write(input_data)
        cliente.sendall("recibido".encode())
print("conexion cerrada")
archivo.close()
cliente.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...