zoukankan      html  css  js  c++  java
  • 网络编程上传内容

    客户端
    
    import socket
    import os
    import json
    import struct
    
    
    client =socket.socket()
    client.connect(("127.0.0.1",12000))
    """
    获取文件路径
    获取这个文件路径下的文件
    for循环打印再加上枚举打印这个文件下的内容
    用户选择上传内容
    判断输入是否时数字
    然后把输入的序号转为int类型
    判断这个数字是否大于文件内容
    取出用户选择的内容然后拼接路径
    取出用户选择文件的内容
    创建一个字典,取名字放入取出的内容
    序列化字典将字典变成一个字符串后边在转成二进制
    创建一个一个字典的报头
    发送字典的报头
    发送序列话过后的字典
    打开文件for 循环文件据柄
    在发送循环过后的字符
    """
    
    while True:
        HUOQU = r"D:老男孩学习资料视频day30视频"
        PATH  =os.listdir(HUOQU)
        for i ,j in enumerate(PATH,1):
            print(i,j)
        choice = input("请输入编号>>>:")
        if choice.isdigit():
             choice=int(choice)-1
             if choice in range(0,len(PATH)):
                 wenjian =os.path.join(HUOQU,PATH[choice])
                 neirong = os.path.getsize(wenjian)
                 d ={"name":"欧美精选",
                     "file_size":neirong}
                 byths = json.dumps(d).encode("utf-8")
                 suoxiaoshuju = struct.pack("i",len(byths))
                 client.send(suoxiaoshuju)
                 client.send(byths)
    
                 with open (wenjian,"rb") as f:
                     for i in f:
                         client.send(i)
    
    
             else:
                 print("不在范围")
        else:
            print("不是数字")
    服务端
    import socket
    import json
    import struct
    server = socket.socket()
    server.bind(("127.0.0.1",12000))
    server.listen(5)
    """获取文件报头
    将文件报头解开
    获取文件
    将文件反序列化,将字符串编程字典
    取出字典的内的数据
    创建初始文件长度
    读出字典文件的数据
    判断文件内的内的数据是否大于字典内的数据
    每次取出字节1024
    f.取出
    文件长度+每次取出的字节"""
    
    while True:
        conn,msg = server.accept()
        while True:
    
            try:
                res = conn.recv(4)
                res1 = struct.unpack("i",res)[0]
                res2 = conn.recv(res1)
                res3  =json.loads(res2.decode("utf-8"))
                res4 = res3.get("file_size")
                dic_size = 0
                with open(res3.get("name"),"wb") as f:
                    while dic_size<res4:
                        data = conn.recv(1024)
                        f.write(data)
                        dic_size+=len(data)
                    print("sahngchuan")
    
            except ConnectionError as e:
                break
        conn.close()
  • 相关阅读:
    js let
    go 语言
    第二十七篇、使用MVVM布局页面
    第二十六篇、因为自定item(nav)而使系统右滑返回手势失效的解决方法
    第四篇、点赞的粒子动画
    第二十五篇、抽屉效果的核心代码
    第二十四篇、iOS 10版本适配
    第二十三篇、使用NSURLSession时需要注意一个内存泄漏问题
    第十四篇、Ajax与Json
    第十三篇、jQuery Mobile
  • 原文地址:https://www.cnblogs.com/yangxinpython/p/11323422.html
Copyright © 2011-2022 走看看