• 切换目录


    # 切换目录(客户端代码)
    import socket
    import os
    
    sk = socket.socket()
    sk.connect(("127.0.0.1",8090))
    
    abs_path = input('请输入一个根目录:')
    sk.send(abs_path.encode('utf-8'))
    current_dir = sk.recv(1024).decode('utf-8')
    print(current_dir.split('--'))
    
    while 1:
        cmd = input('请输入指令>>>')
        sk.send(cmd.encode('utf-8'))
    
        if cmd.upper() == 'Q': # 退出循环
            break
    
        elif cmd == '..':
            current_dir = sk.recv(1024).decode('utf-8')
            print(current_dir.split('--'))
    
        elif cmd == 'cd':
            filename = input('请输入一个文件名>>>')
            sk.send(filename.encode('utf--8'))
            current_dir = sk.recv(1024).decode('utf-8')
            print(current_dir.split('--'))
    
        else:
            error = sk.recv(1024).decode('utf-8')
            print(error)
    # 切换目录(服务器端代码)
    import socket
    import os
    
    sk = socket.socket()
    sk.bind(('127.0.0.1',8090))
    sk.listen()
    conn,addr = sk.accept()
    
    
    def send_data(conn,path):
        try: # 当文件找不到时会出错,故用try来解决一问题
            list_dir = os.listdir(path)
            current_dir = '--'.join(list_dir)
            conn.send(current_dir.encode('utf-8'))
        except FileNotFoundError:
            conn.send('系统找不到指定的路径。'.encode('utf-8')) # 文件找不到时返回这个错误
    
    
    abs_path = conn.recv(1024).decode('utf-8')
    current_path = abs_path + '\'
    send_data(conn,current_path)
    
    while 1:
        cmd = conn.recv(1024).decode('utf-8')
        if cmd.upper() == 'Q':
            break
    
        elif cmd == '..':
            current_dir = current_path.split('\')[:-2]
            current_path = '\'.join(current_dir) + '\'
            send_data(conn,current_path)
    
        elif cmd == 'cd':
            filename = conn.recv(1024).decode('utf-8')
            current_path += filename + '\'
            send_data(conn,current_path)
    
        else:
            conn.send('指令错误'.encode('utf-8'))
  • 相关阅读:
    hbase安装(zookeeper等)
    虚函数表以及RTTI阅读(阅后焚)
    void及void指针含义的深刻解析
    泛型和模版的区别
    C++析构函数为什么要为虚函数
    C++对象模型
    在C++中子类继承和调用父类的构造函数方法
    什么是复合类型
    C++ read
    gdb 调试c/c++的一些小技巧
  • 原文地址:https://www.cnblogs.com/wjs521/p/9506388.html
Copyright © 2020-2023  润新知