Exemplo n.º 1
0
    def handle(self):
        print(f"主机{self.client_address}连接成功,欢迎使用FTP服务器。。。")
        while 1:
            try:
                msg = "请问你需要上传还是下载."
                # 发数据
                common.common_tcp_send_data_interface(self.request, msg)
                # 收数据
                client_request = common.common_tcp_recv_data_interface(
                    self.request)
                print(msg)

                # 根据请求进行判断
                if client_request == "下载":
                    # 发文件给客户机
                    server_fip_interface.Server_download_interface(
                        self.request)
                elif client_request == "上传":
                    # 接收文件到服务器
                    server_fip_interface.Server_Upload_interface(self.request)
                else:
                    # 客户端输入错误,直接重新开始
                    continue
                    # common.common_tcp_send_data_interface(self.request,"输入错误")

            except:
                print("与客户机连接中断。。。\n")
                break
Exemplo n.º 2
0
def Server_Upload_interface(conn):
    # 接收需要上传的文件名
    file_name = common.common_tcp_recv_data_interface(conn)

    # 接收文件,如果不成功则收到一段话
    flag = common.common_tcp_recv_data_interface(
        conn, file_name=file_name, recv_dir=settings.SERVER_FILE_DIR)
    if not isinstance(flag, str):
        print(f"客户机成功上传 {file_name}")
        common.common_tcp_send_data_interface(conn, f"{file_name} 上传成功")
        return True
    else:
        common.common_tcp_send_data_interface(conn, f"{file_name} 上传失败")
        return False
def Client_Upload_interface(soc):
    print("目录文件:", os.listdir(settings.CLIENT_FILE_DIR))
    # 输入下载文件名
    file_name = input("请输入需要上传的文件")
    flag = common.common_tcp_send_data_interface(soc, file_name)
    if not flag:
        return False

    # 上传文件(文件名,接收目录)
    flag = common.common_tcp_send_data_interface(
        soc, file_name=file_name, send_dir=settings.CLIENT_FILE_DIR)
    if flag:
        # 成功上传,接收消息
        msg = common.common_tcp_recv_data_interface(soc)
        print(msg)
        return True
    else:
        # 发送错误信息
        common.common_tcp_send_data_interface(soc, "输入错误,文件不存在")
        msg = common.common_tcp_recv_data_interface(soc)
        print(msg)
        return False
def Client_download_interface(soc):
    # 先拿可下载的内容信息
    msg = common.common_tcp_recv_data_interface(soc)
    print(msg)

    # 输入下载文件名
    file_name = input("请输入需要下载的文件")
    flag = common.common_tcp_send_data_interface(soc, file_name)
    if not flag:
        return False

    # 接收文件(文件名,接收目录)
    flag = common.common_tcp_recv_data_interface(
        soc, file_name=file_name, recv_dir=settings.CLIENT_FILE_DIR)
    if not isinstance(flag, str):
        msg = common.common_tcp_recv_data_interface(soc)
        print(msg)
        return True
    else:
        # 上传失败
        print(flag)
        return False
def run():
    soc = socket.socket()
    soc.connect((settings.HOST, settings.PORT))

    while 1:
        msg = common.common_tcp_recv_data_interface(soc)
        if not msg:
            print("出错了")
            break
        server_request = input(msg)
        flag = common.common_tcp_send_data_interface(soc, data=server_request)
        if not flag:
            print("出错了")
            break
        # 下载逻辑
        if server_request == "下载":
            client_ftp_interface.Client_download_interface(soc)
        # 上传逻辑
        elif server_request == "上传":
            client_ftp_interface.Client_Upload_interface(soc)
        # 错误逻辑
        else:
            print("输入错误")  # 输入错误直接重新开始
Exemplo n.º 6
0
def Server_download_interface(conn):
    # 先告诉别人我FTP服务器中有哪些文件可被下载
    file_list = os.listdir(settings.SERVER_FILE_DIR)
    resources_data = f"FTP服务器中文件:{file_list}"
    flag = common.common_tcp_send_data_interface(conn, resources_data)
    if not flag:
        return False

    # 拿到要下载的文件名
    file_name = common.common_tcp_recv_data_interface(conn)
    if not file_name:
        return False

    # 发送给别人
    msg = common.common_tcp_send_data_interface(
        conn, file_name=file_name, send_dir=settings.SERVER_FILE_DIR)
    if msg:
        print(f"客户机成功下载 {file_name}")
        common.common_tcp_send_data_interface(conn, f"{file_name} 下载成功")
        return True
    else:
        common.common_tcp_send_data_interface(conn, f"{file_name} 下载失败")
        return False