zoukankan      html  css  js  c++  java
  • python之socket运用之传输大文件

    socket建议最大的传输单元是8192个字符,但是如果超过8192就会出现问题,我们可以用下面的方法处理

    客户端代码

    import subprocess
    import socket
    ip_bind = ("127.0.0.1",9000)
    client = socket.socket()
    client.connect(ip_bind)
    l1 = []
    while True:
        option = input("client:")
        client.sendall(bytes(option,encoding="utf-8"))
        server_data_size = client.recv(50)
        print(server_data_size)
        a = str(server_data_size,encoding="utf-8").strip()
        print(a)
        l1 = a.split(":")
        print(l1)
        if l1[0] == "server_data_size":
            client_size_tmp = l1[1]
            print(client_size_tmp)
            client_size = int(client_size_tmp)
            print(type(client_size))
        client.send(bytes("ok",encoding="utf-8"))
        receive_size = 0
        res = ""
        while receive_size < client_size:
            server_data = client.recv(100)
            receive_size += len(server_data)
            res += str(server_data)
        else:
            print(res)
            print("-------reveive down---------")
    

    服务端代码

    import subprocess
    import socket
    ip_bind = ("127.0.0.1",9000)
    server = socket.socket()
    server.bind(ip_bind)
    server.listen(1)
    print("server is waiting........")
    conn,add = server.accept()
    print("server is connected client")
    while True:
        client_data = conn.recv(50)
        a = subprocess.Popen(str(client_data,encoding="utf-8"),stdout=subprocess.PIPE)
        b = a.stdout.read()
        server_data_size = "server_data_size:" + str(len(b))
        conn.sendall(bytes(server_data_size,encoding="utf-8"))
        client_ack = conn.recv(10)
        if str(client_ack,encoding="utf-8") == "ok":
            conn.sendall(b)
    

      

  • 相关阅读:
    【odoo14】【好书学习】第一章、安装odoo的开发环境
    echarts 根据geojson 数据绘制区域图(精确到镇)
    百度地图 获取具体位置经纬度
    js 实时监听滚动条状态 判断滚动条位置
    vue cli3 使用elemet-plus
    关于vue告警 More than 1 blank line not allowed
    vue cli3 创建项目
    intelliJ idea 自动修复eslint语法问题
    函数式编程
    二分法
  • 原文地址:https://www.cnblogs.com/bainianminguo/p/7223177.html
Copyright © 2011-2022 走看看