我正在用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()