大きなファイルのTCP転送、UDPシミュレーションQQ

TCPトランスポートの大きなファイル

サーバー

インポートソケット
 インポートOSの
 インポートJSON
 インポート構造体


サーバ = socket.socket()
server.bind((' 127.0.0.1 '、8080 ))
server.listen( 5 

一方、TRUE:
    CONN、ADDR = server.accept()
     一方TRUE:
         試す
            header_len = conn.recv(4 解析字典报头 
            header_len = struct.unpack(' I ' 、header_len)[0]
            次いで、データ・ディクショナリ受信 
            header_dic = conn.recv(header_len)
            real_dic =のjson.loads(header_dic.decode(' UTF-を8 ' ))
            取得するデータ長が 
            TOTAL_SIZE = real_dic.get(' FILE_SIZE ' #のループが受け取ると、ファイルを書き込みます。 
            = recv_size 0を
            開くと(real_dic.get(' FILE_NAME ')、' WB ' )F AS:
                 しばらく recv_size < TOTAL_SIZE:
                    データ = conn.recv(1024 
                    f.write(データ)
                    recv_size + = LEN(データ)
                 印刷' 上传成功' を除き、eとConnectionResetError:
             印刷(e)の
             ブレーク
    はconn.close()

クライアント

インポートソケット
 インポートのJSON
 のインポートのOS
 インポート構造体


クライアント = socket.socket()
client.connect((' 127.0.0.1 '、8080 ))

しばらく真:
     #1 を介して取得映画リストサイクル 
    MOVIE_DIR = R " D:\ Pythonのフルタイム10ビデオ\ day25の\ビデオ
    movie_list = os.listdir(MOVIE_DIR)
    印刷(movie_list)の
    ために I、映画列挙(movie_list ,. 1 ):
         印刷(I、動画)
     #のユーザーが選択した 
    選択肢=入力を(してくださいアップロードへ>>>選択肢映画:#があるか否かを判定する数
    であればchoice.isdigit():
        デジタルint型に文字列 
        の選択= INT(選択) - 1つの。#は、範囲内で選択したユーザーが表示されていないかどうかを判断した場合選択中の範囲(0、LEN(movie_list)):
            、ユーザーがファイルパスアップロードしたいもらう 
            パス= movie_listを[選択]
             絶対パススプライシングファイル 
            FILE_PATH = os.path.join(MOVIE_DIR、パス)
             #をGETファイルサイズ 
            FILE_SIZE = os.path.getsize(FILE_PATH)
            辞書を定義 
            = RES_Dを
        
        {
                 ' FILE_NAME '' セクシーなディーラーのオンラインライセンス.MP4 ' ' FILE_SIZE ' :FILE_SIZE、
                 ' MSG '' 身体への注意、栄養ドリンクエクスプレス' 
            } 
            連載辞書 
            json_d = json.dumps(RES_D)
            json_bytes json_d.encode =(' UTF-8 ' 

            1は、第1辞書フォーマットヘッダする 
            ヘッダstruct.pack =(' Iが' 、LEN(json_bytes))
            2の送信辞書ヘッダ
            client.send(ヘッダ)
             3.再発辞書
            client.send(json_bytes)
            4。再送データファイル(ファイルのオープンループ送信) 
            オープンで(FILE_PATH、' RB ' )F AS:
                 のためのラインF:
                    クライアント。 (ライン)を送信し
        、他印刷ない範囲で印刷番号でなければなりません

 

UDPシミュレーションQQ

サーバー

インポートソケット


サーバ = socket.socket(タイプ= socket.SOCK_DGRAM)
server.bind((' 127.0.0.1 '、8080 )) 

一方TRUE:
    データ、ADDR = server.recvfrom(1024 プリント(data.decode(' UTF- 8 ' ))
    MSG =入力(' >>>:' 
    server.sendto(msg.encode(' UTF-8 ')、ADDR)

 

クライアント

インポートソケット


クライアント = socket.socket(タイプ= socket.SOCK_DGRAM)
SERVER_ADDRESS =(' 127.0.0.1 '、8080 

、一方TRUE:
    MSG =入力(' >>>:' 
    MSG = ' 来自客户端1的消息:% S 'MSG 
    client.sendto(msg.encode(' UTF-8 ' )、SERVER_ADDRESS)
    データ、SERVER_ADDR = client.recvfrom(1024 プリント(data.decode(' UTF-8 '))

 

おすすめ

転載: www.cnblogs.com/wkq0220/p/11324098.html