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 '))