Я хочу создать программу, которая может искать файл на компьютере сервера, если файл существует на сервере, уведомить клиента, если он не уведомляет клиента, затем распечатать результат клиенту, а затем отправить файл наклиент.
Это мой клиентский код
client.py
import socket
HOST = '127.0.0.1'
PORT = 2000
def find_all(search):
socket1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket1.connect((HOST, PORT))
search = input("Enter file name: ")
socket1.send(search.encode('utf-8'))
found = socket1.recv(1024).decode('utf-8')
result = socket1.recv(1024).decode('utf-8')
print(result)
not_found = socket1.recv(1024).decode('utf-8')
with open(result, 'wb') as file_to_write:
while True:
result = socket1.recv(1024).decode("utf-8")
print(result)
if not result:
break
file_to_write.write(result.encode('utf-8'))
file_to_write.close()
print('Download Successful')
socket1.close()
return
print(find_all('search'))
Это ошибка со стороны клиента
Traceback (most recent call last):
File "/cient.py", line 29, in <module>
print(find_all('search'))
File "/client.py", line 16, in find_all
with open(result, 'wb') as file_to_write:
FileNotFoundError: [Errno 2] No such file or directory: ''
Это мой код на стороне сервера:
server.py
import socket
import os
from pathlib import Path
HOST = '127.0.0.1'
PORT = 2000
socket1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket1.bind((HOST, PORT))
socket1.listen(5)
conn, addr = socket1.accept()
result = []
search = conn.recv(1024).decode('utf-8')
path = str(Path.home())
for root, dirs, files in os.walk(path):
if search in files:
found = socket1.send("File found".encode('utf-8'))
print('data=%s', found)
result.append(os.path.join(root, search))
socket1.send(result.encode('utf-8'))
else:
not_found = socket1.send("File not found".encode('utf-8'))
print('data=%s', not_found)
while True:
with open('result', "rb") as file_to_send:
for result in file_to_send:
conn.sendall(result.encode('utf-8'))
print('Send Successful')
Это ошибка с сервера
Traceback (most recent call last):
File "/server.py", line 22, in <module>
not_found = socket1.send("File not found".encode('utf-8'))
BrokenPipeError: [Errno 32] Broken pipe
Когда я запустил оба кода, он работает, но не; t представить вывод клиенту, если файл не существует или существует в папке.