zoukankan      html  css  js  c++  java
  • 上传下载

    # 默写 TCP UDP 文件夹中的代码
    # 完成一个上传和下载文件的小程序
    # server端 :根据客户端需求自定义
    # client端
    # 客户端启动之后
    # 选择 上传操作 还是 下载操作
    # 如果是上传操作 : 输入要上传的文件路径
    # 基础需求 :直接将文件上传到默认目录
    # 进阶需求 :将文件上传到指定目录
    # 如果是下载文件 : 输入要下载的文件路径
    # 基础需求 : 直接将文件下载到当前目录
    # 进阶需求 :将文件下载到指定目录
    # 字符串
    # 文件 - 读文件 转码 写文件
    # 默写 TCP UDP 文件夹中的代码
    # 完成一个上传和下载文件的小程序
    # server端 :根据客户端需求自定义
    # client端
    # 客户端启动之后
    # 选择 上传操作 还是 下载操作
    # 如果是上传操作 : 输入要上传的文件路径
    # 基础需求 :直接将文件上传到默认目录
    # 进阶需求 :将文件上传到指定目录
    # 如果是下载文件 : 输入要下载的文件路径
    # 基础需求 : 直接将文件下载到当前目录
    # 进阶需求 :将文件下载到指定目录
    # 字符串
    # 文件 - 读文件 转码 写文件
    # 默写 TCP UDP 文件夹中的代码
    # 完成一个上传和下载文件的小程序
    # server端 :根据客户端需求自定义
    # client端
    # 客户端启动之后
    # 选择 上传操作 还是 下载操作
    # 如果是上传操作 : 输入要上传的文件路径
    # 基础需求 :直接将文件上传到默认目录
    # 进阶需求 :将文件上传到指定目录
    # 如果是下载文件 : 输入要下载的文件路径
    # 基础需求 : 直接将文件下载到当前目录
    # 进阶需求 :将文件下载到指定目录
    # 字符串
    # 文件 - 读文件 转码 写文件
    # 默写 TCP UDP 文件夹中的代码
    # 完成一个上传和下载文件的小程序
    # server端 :根据客户端需求自定义
    # client端
    # 客户端启动之后
    # 选择 上传操作 还是 下载操作
    # 如果是上传操作 : 输入要上传的文件路径
    # 基础需求 :直接将文件上传到默认目录
    # 进阶需求 :将文件上传到指定目录
    # 如果是下载文件 : 输入要下载的文件路径
    # 基础需求 : 直接将文件下载到当前目录
    # 进阶需求 :将文件下载到指定目录
    # 字符串
    # 文件 - 读文件 转码 写文件

    server端
    import json
    import socket

    sk = socket.socket()
    sk.bind(('127.0.0.1',8080))
    sk.listen()

    conn,addr = sk.accept()
    content = conn.recv(1024).decode('utf-8')
    content_dic = json.loads(content)
    if content_dic['operate'] == 'upload':
    conn.send(b'received!')
    with open(content_dic['filename'],'wb') as f:
    while content_dic['filesize']:
    file = conn.recv(1024)
    f.write(file)
    content_dic['filesize'] -= len(file)
    conn.close()
    sk.close()


    client端
    import os
    import json
    import socket

    sk = socket.socket()
    sk.connect(('127.0.0.1',8080))

    def get_filename(file_path):
    filename = os.path.basename(file_path)
    return filename

    #选择 操作
    operate = ['upload','download']
    for num,opt in enumerate(operate,1):
    print(num,opt)
    num = int(input('请输入您要做的操作序号 : '))
    if num == 1:
    '''上传操作'''
    #file_path = 'E:python10day33作业.py'
    file_path = input('请输入要上传的文件路径 : ')
    # 告诉对方要上传的文件的名字
    file_name = get_filename(file_path)
    # 读要上传的文件 存成字符串
    with open(file_path,encoding='utf-8') as f:
    content = f.read()
    dic = {'operate':'upload','filename':file_name,'content':content}
    # 将字符串send给server端
    str_dic = json.dumps(dic)
    sk.send(str_dic.encode('utf-8'))
    # server端接收 bytes转码程字符串
    # server端打开文件 写文件
    elif num == 2:
    '''下载操作'''
    sk.close()

    
    
  • 相关阅读:
    Overloaded的方法是否可以改变返回值的类型
    parseXXX的用法
    java的类型转换问题。int a = 123456;short b = (short)a;System.out.println(b);为什么结果是-7616?
    UVA 10405 Longest Common Subsequence(简单DP)
    POJ 1001 Exponentiation(大数处理)
    POJ 2318 TOYS(计算几何)(二分)
    POJ 1265 Area (计算几何)(Pick定理)
    POJ 3371 Flesch Reading Ease (模拟题)
    POJ 3687 Labeling Balls(拓扑序列)
    POJ 1094 Sorting It All Out(拓扑序列)
  • 原文地址:https://www.cnblogs.com/mys6/p/10799965.html
Copyright © 2011-2022 走看看