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)
    

      

  • 相关阅读:
    谷歌浏览器离线安装
    C语言restrict关键字的使用
    Win32编程中radiobutton的分组
    在SourceForge中建立开源项目
    [转载]Linux解压缩命令
    [转载]vim配置文件
    解决VC6在win7下打开文件崩溃问题
    gson解析复杂的json数据
    catch中return语句的执行时间
    踏出了学习clojure的第一步
  • 原文地址:https://www.cnblogs.com/bainianminguo/p/7223177.html
Copyright © 2011-2022 走看看