day37 lição de casa

Servidor 

Import soquete
 Import struct
 Import JSON
 Import OS 


servidor = socket.socket (socket.AF_INET, socket.SOCK_STREAM) 

server.bind (( ' 172.0.0.1 ' , 8080 )) 

server.listen ( 5. ) 

Enquanto True: 
    Conn, client_addr = server.accept () 

    o tempo True:
         o try : 

            arquivo = conn.recv (1024 )
             se len (file) == 0:
                 INTERVALO 

            # presença ou ausência do arquivo baixado para determinar 
            se não os.path.exists (File): 
                conn.send ( ' link para download não existe ' .encode ( ' GBK ' ))
                 INTERVALO 

            # Abra o arquivo para ler os dados 
            com Open (Arquivo, ' rb ' ) AS f: 
                RES = f .read () 

                res_len = len (FER) 

            # cabeça produção 
            header_dic = { " TOTAL_SIZE " : res_len} 

            json_str = json.dumps (header_dic) 
            json_str_bytes = json_str.encode ( 'GBK ' ) 

            # comprimento de transmissão cabeçalho 
            X = struct.pack ( ' I ' , len (json_str_bytes)) 
            conn.send (X) 

            # transmissão de dados de cabeçalho 
            conn.send (json_str_bytes) 

            conn.send (RES) 
        o salvo excepção:
             RUPTURA socket de
 importação do 
cliente 
    conn.close () 




importação json
 import struct 
cliente = socket.socket (socket.AF_INET, socket.SOCK_STREAM) 
client.connect (( ' 172.0.0.1 ' , 8080 )) while 
    file




 True:A entrada = ( ' Por favor, indique o nome do arquivo que você deseja fazer o download ' ) .strip () 

    IF len (File) == 0:
         o Continue 

    client.send (file.encode ( ' GBK ' )) 

    # primeiro a receber um 4, foi preparada para dar o comprimento da informação de cabeçalho 
    X = client.recv (. 4 ) 
    header_len = struct.unpack ( ' I ' , X) [0] 

    # , depois de a cabeça tem um comprimento, o comprimento da informação de cabeçalho TOTAL_SIZE entrar 
    json_str_bytes = client.recv (header_len) 
    json_str = json_str_bytes.decode ( ' gbk ' ) 
    header_dic = = header_dic [ json.loads (json_str)
    total_size" total_size " ] 

    recv_size = 0
     enquanto total_size> recv_size: 
        recv_data = client.recv (1024 ) 
        recv_size + = len (recv_data)
         print (recv_data.decode ( ' gbk ' ), end = '' )
     print ()

 

Acho que você gosta

Origin www.cnblogs.com/yding/p/12749026.html
Recomendado
Clasificación