套接字通信——作业

  • 客户端

    import socket
    
    phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # phone.connect(('47.103.218.45', 8081))
    phone.connect(('127.0.0.1', 8080))
    
    while True:
        msg = input("请输入命令(退出[exit]):").strip()
        if len(msg) == 0:continue
        if msg == 'exit':
            phone.close()
            break
        phone.send(msg.encode('utf-8'))
        server_data = phone.recv(1024)
        print('服务器:', server_data.decode('utf-8'))
    
  • 服务器端

    import socket
    import os
    
    phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # phone.bind(('172.17.24.180', 8081))
    phone.bind(('127.0.0.1', 8080))
    
    phone.listen(5)
    while True:
        print('正在等待连接...')
        conn, client_addr = phone.accept()
        print('连接建立成功!')
        while True:
            try:
                client_data = conn.recv(1024)
                cmd = client_data.decode('utf-8')
                if ' ' in cmd:
                    cmd = cmd.split()
                    create_path = os.path.dirname(__file__)
                    if cmd[0] == 'mkdir':
                        create_path = os.path.join(create_path, cmd[1])
                        os.mkdir(create_path)
                        conn.send(f'文件夹已创建'.encode('utf-8'))
                    elif cmd[0] == 'mkfile':
                        create_path = os.path.join(create_path, cmd[1])
                        with open(create_path, 'wt') as f:
                            f.write('')
                            f.close()
                        conn.send(f'文件已创建'.encode('utf-8'))
                elif cmd == 'ls':
                    dir_list_path = os.path.dirname(__file__)
                    conn.send(f'{os.listdir(dir_list_path)}'.encode('utf-8'))
                else:
                    conn.send(f'命令{cmd}不存在'.encode('utf-8'))
            except Exception:
                break
        conn.close()
    
    phone.close()
    
posted @ 2020-04-20 17:03  群青-Xi  阅读(117)  评论(0)    收藏  举报