Отображение файлов и всех каталогов в текущем каталоге клиента с использованием сети Python - PullRequest
0 голосов
/ 16 марта 2019

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

У меня проблемы с отображением файла в текущем каталоге файла клиента. а также показывает все каталоги и подкаталоги в текущем каталоге клиентского файла.

Я должен показать это в командной строке на стороне клиента, как на картинке выше.

Пожалуйста, помогите мне с этим кодом. спасибо

Пока это коды, которые у меня есть:

server.py:

import socket
import threading
import os

HOST = "localhost"      
PORT = 5551

def setpath(curdir, np, conn):
    print("setting new path")
    print("from: ", curdir)
    print("to: " , np)

    m = "New Path: " + np

    conn.send(m.encode('utf-8'))

def showfiles(p, conn):
    ffound = "Files found under: " + p + "\n"
    conn.send(ffound.encode('utf-8'))
    for (path, dirlist, filelist) in os.walk(p):
       for f in filelist:
            print(f)
            f = f + "\n"
            conn.send(f.encode('utf-8'))

def showdir(p, conn):
    dfound = "Directories found under: " + p + "\n"
    conn.send(dfound.encode('utf-8'))
    for (path, dirlist, filelist) in os.walk(p):
        for d in dirlist:
            print(os.path.join(path, d))
            dr = os.path.join(path, d) + "\n"
            conn.send(dr.encode('utf-8'))

def clientsocket():
    s.listen()
    (conn, addr) = s.accept() 

    FCL = []
    while True:
        fromClient = conn.recv(1024).decode('utf-8')
        FCL.append(fromClient)
        if fromClient == 's':
            fc = conn.recv(1024).decode('utf-8')
            setpath(FCL[0], fc, conn)
            FCL.pop()
        if fromClient == 'f' :
            showfiles(FCL[0], conn)
            FCL.pop()
        if fromClient == 'd' :
            showdir(FCL[0], conn)
            FCL.pop()
        if fromClient == 'q':
            break

with socket.socket() as s :
    s.bind((HOST, PORT))
    print("Server hostname:", HOST, "port:", PORT)

    try :
        s.settimeout(10)        # set timer to time out after 3 seconds
        threads= []
        t = threading.Thread(target = clientsocket)
        threads.append(t)
        t.start()
        for th in threads :
            th.join()

    except socket.timeout :    
        print("Caught Time-Out! No Client Connected.") 

client1.py

import socket
import os

HOST = '127.0.0.1'
PORT = 5551

def userinput(p):

    m = input("s: set path \nf: show files \nd: show dirs \nq: quit \nEnter Choice: ")
    while m not in ['s','f','d','q']:
        m = input("s: set path \nf: show files \nd: show dirs \nq: quit \nEnter Choice: ")

s.send(m.encode('utf-8'))

    if m == 's':
        newpath= input("Enter path, starting from current directory: ")
        s.send(newpath.encode('utf-8'))

    return m

def display():
    print()

with socket.socket() as s :
    s.connect((HOST, PORT))
    print("Client connect to:", HOST, "port:", PORT)
    p = os.getcwd()
    s.send(p.encode('utf-8'))
    print("Current Directory:", p)
    mesg = userinput(p)
    while mesg != 'q':
        fromServer = s.recv(1024).decode('utf-8')
        print(fromServer)
        mesg = userinput(p)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...