套接字错误未收到客户端文件-%% EOF外部参照

时间:2019-02-09 01:31:22

标签: python sockets

我正在用python和套接字做基本服务器。

此服务器能够接收文本和发送文件。

当到达服务器的消息是文件时,它将返回文件uno.pdf,这是错误的原因,因为客户端没有收到 文件,并显示以下错误:

enter image description here

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()

0 个答案:

没有答案