簡単なダウンロードモデルを作るソケットの使用(TCP)

ダウンロード実際、必要性の二つのモデル、1は要求およびダウンロードデータはあなたが基本的に書くことができ、このコンセプトに、サーバによって送信されたダウンロードを開始し、応答し、送信データとして、他のモデルは、クライアント側で、サーバー側です。

 

図1に示すように、クライアント側のコードであります

インポートソケット

DEF メイン():
    作成ソケット 
    TCP_SOCKET = socket.socket(はsocket.AF_INET、socket.SOCK_STREAM)#ソケットはソケットを作成し、DGRAM UDP、TCPのにSTREAMとして

    #を使用すると、サーバ情報バインドしたい入力 
    dest_ipを=入力(" サーバーのIPアドレスを入力してください:" 

    dest_portは = INT(入力(" サーバーPortiを入力してください:" )) 

    バインドサーバー
    tcp_socket.connect((dest_ip、dest_portは)) #のTCPのこのポイントをバインドするには、サーバーのIPポートが必要UDPとを区別する必要がある

    入力ファイル名をダウンロードする必要が 
    FILE_NAMEを=入力(ダウンロードにしたいファイルの名前を入力してください:
    tcp_socket.send(file_name.encode(UTF-8 ))
    情報を受信し、ダウンロード 
    データtcp_socket.recvを= * 1024(1024 
    オープンして(' 新しい' + file_nameに、' WB ' )AS F:
        f.write(データ)

    近いソケット
    tcp_socket.close()


IF  __name__ == ' __main__ ' 
    main()の

2、サーバコード

インポートソケット

DEF メイン():
    作成ソケット 
    TCP_SOCKET = socket.socket(はsocket.AF_INET、socket.SOCK_STREAM)
    バインドローカル情報 
    LOCAL_ADDR =(''、8080 
    tcp_socket.bind(LOCAL_ADDR) 


    モニタ 
    tcp_socket.listen (128 )TCPサーバーは、リスニング#を持つ接続リンク待ち
    
    ダウンロードサービス 
    new_client、CLIENT_ADDR = tcp_socket.accept()#ウェイトがリンクを接続すると、クライアントは戻りタプルを接続した場合、タプル[0]次の送信であるとの情報を受け取ります新しいソケットが使用され、祖先[1]はクライアントのアドレスに接続されている
    FILE_NAME = new_client.recv(1024).decode(UTF-8 を印刷" %sの成功リンク'(STR(CLIENT_ADDR)))
     試し
        F =オープン(FILE_NAME、' RBは' 
        データ = f.read()
     以外Tとして例外:
         プリント" 文件名错误%S "(T))
    new_client.send (データ)
    new_client.close()
    tcp_socket.close()


場合 __name__ == " __main__ " 
    main()の

上記のコードは、二つの端子上で直接実行はLinuxであることができます

おすすめ

転載: www.cnblogs.com/oslo254804746/p/11870531.html