zoukankan      html  css  js  c++  java
  • 一次完整的socket文件的传输

    • socket建立网络连接,注意文件分割后,传输完成的检测
    • pickle 封装文件信息:文件名、文件大小、md5码
    • os 文件路径、文件名、文件大小
    • hashlib md5码生成

    server端

    # Author:Winter Liu is coming!
    import socket
    import pickle
    import hashlib
    
    server = socket.socket()
    server.bind(("127.0.0.1", 10002))
    server.listen()
    conn, addr = server.accept()
    
    msg = conn.recv(1024)
    msg = pickle.loads(msg)
    filesize = msg["filesize"]
    m = hashlib.md5()
    with open(msg["filename"], "wb") as f:
        while filesize:
            data = conn.recv(4096)
            m.update(data)
            f.write(data)
            filesize -= len(data)
    if m.hexdigest() == msg["md5"]:
        print("translation complete!",m.hexdigest())
    else:
        print("transfer error!")
    
    server.close()

    client端

    # Author:Winter Liu is coming!
    import socket
    import pickle
    import os
    import hashlib
    
    client = socket.socket()
    server = ("127.0.0.1", 10002)
    client.connect(server)
    abs_path = r"C:PycharmProjectspython level upSocket网络编程	est.txt"
    filename = os.path.basename(abs_path)
    filesize = os.path.getsize(abs_path)
    m = hashlib.md5()
    with open(abs_path, "rb") as f:
        for line in f:
            m.update(line)
    dic = {"filename": filename, "filesize": filesize,"md5":m.hexdigest()}
    print(dic)
    msg = pickle.dumps(dic)
    client.send(msg)
    
    with open(abs_path, "rb") as f:
        while filesize:
            data = f.read(4096)
            client.send(data)
            filesize -= len(data)
    
    
    client.close()
  • 相关阅读:
    kafka server.properties配置文件详解
    kafa单机版环境搭建
    zookeeper单机版安装
    Java中的String,StringBuilder,StringBuffer三者的区别
    单行溢出和多行溢出显示省略号
    SEO之网站内链优化策略
    第十三周学习笔记
    第十二周LINUX学习笔记
    第十一周LINUX 学习笔记
    第十周LINUX 学习笔记
  • 原文地址:https://www.cnblogs.com/nmucomputer/p/12858698.html
Copyright © 2011-2022 走看看