• python note 27 粘包


    1、server

    import socket
    import json
    sock=socket.socket()
    sock.bind(('127.0.0.1',8800))
    sock.listen(5)
    
    
    
    while 1:
        print("server is working....")
        conn,addr= sock.accept()
        while 1:
            data=conn.recv(1024).decode("utf8")
            file_info=json.loads(data)
            print("file_info",file_info) # {'action': 'put', 'filename': '111.jpg', 'filesize': 93605}
    
            # 文件信息
            action=file_info.get('action')
            filename=file_info.get('filename')
            filesize=file_info.get('filesize')
    
            conn.send(b"200")
    
            # 接收文件数据
            with open("put/"+filename,"wb") as f:
                recv_data_length=0
                while recv_data_length<filesize:
                    data=conn.recv(1024)
                    recv_data_length+=len(data)
                    f.write(data)
                    print("文件总大小:%s,已成功接收%s"%(filesize,recv_data_length))
    
            print("接收成功!")

    2、client

    import socket
    import os
    import json
    
    sock=socket.socket()
    sock.connect(("127.0.0.1",8800))
    
    
    while 1 :
        cmd=input("请输入命令:") # put 111.jpg
    
        action,filename=cmd.strip().split(" ")
        filesize=os.path.getsize(filename)
    
        file_info={
            "action": action,
            "filename": filename,
            "filesize": filesize,
        }
        file_info_json=json.dumps(file_info).encode("utf8")
        sock.send(file_info_json)
    
        # 确认服务端接收到了文件信息
        code=sock.recv(1024).decode("utf8")
        if code=="200":
            # 发送文件数据
            with open(filename,"rb") as f:
                for line in f:
                    sock.send(line)
        else:
            print("服务器异常!")
  • 相关阅读:
    PHP独立环境安装与文件配置
    变量常量区别及用法
    PHP初步了解
    js dom操作基本单词和格式
    PHP 类的继承 访问修饰符 重写
    PHP面向对象基本概念 类与对象 静态属性 构造/析构方法
    人员定位系统项目整理
    json
    租房子ajax
    省市区三级联动用ajax实现
  • 原文地址:https://www.cnblogs.com/P-Z-W/p/11151595.html
Copyright © 2020-2023  润新知