資源簡介
代碼運行請復制進自己的功能需求中去。
或者直接將py文件放到已經打開的任務下去嘗試。
127.0.0.1是計算機內部回環地址,
如果需要和別人玩請把內部回環地址改成自己的ip地址,記住客戶端也需要改成你的ip地址,不然查詢不到會報錯,擋在門口。
文件路徑請相互統一一下。如果他的計算機下不存在此地址,就不能存進去。最好丟桌面上,桌面地址請自己去此電腦中查看。
如果出現BUG 請聯系我。 謝謝各位使用這么垃圾的功能。
哈哈哈哈哈哈哈哈哈哈哈。

代碼片段和文件信息
#!/usr/bin/env?python
#?-*-?coding:utf-8?-*-
import?struct
import?json
import?hashlib
import?os
from?socket?import?*
#?dup?C:\Users\Administrator\Desktop\每日筆記\day32\圖片2\timg.jpg
#?D:\圖片\timg.jpg
#?服務器文件路徑/:?get?D:\圖片\timg.jpg
#?存放路徑/文件路徑:?C:\Users\Administrator\Desktop\每日筆記\day32\圖片\
client?=?socket(AF_INET?SOCK_STREAM)
#?print(client)
client.connect((‘127.0.0.1‘?8082))
while?True:
????cmd?=?input(“服務器文件路徑/或者目標地址:?“).strip()??#?get?文件路徑
????addr=input(‘存放路徑/目標存放文件路徑:?‘).strip()
????if?len(cmd)?==?0:
????????continue
????if?len(addr)?==?0:
????????continue
????cmds?file_path?=?cmd.split()
????if?cmds?==‘get‘:
????????client.send(cmd.encode(‘utf-8‘))
????????#?1、先接收報頭的長度
????????n?=?0
????????header?=?b‘‘
????????while?n?4:
????????????data?=?client.recv(1)
????????????header?+=?data
????????????n?+=?len(data)
????????header_size=struct.unpack(‘i‘header)[0]
????????#?2、再接收報頭
????????header_json_bytes=client.recv(header_size)
????????header_json=header_json_bytes.decode(‘utf-8‘)
????????header_dic=json.loads(header_json)
????????print(header_dic)
????????#?3、最后接收真實的數據
????????total_size=header_dic[‘total_size‘]
????????filename=header_dic[‘filename‘]
????????recv_size?=?0
????????with?open(fr“{addr}%s“?%filename?mode=‘wb‘)?as?f:
????????????while?recv_size?????????????????data?=?client.recv(1024)
????????????????f.write(data)
????????????????recv_size?+=?len(data)
????elif?cmds==‘dup‘:
????????client.send(cmd.encode(‘utf-8‘))
????????m5?=?hashlib.md5()
????????with?open(fr‘{addr}‘?mode=‘rb‘)?as?f:
????????????print(‘打開文件‘)
????????????for?line?in?f:
????????????????m5.update(line)
????????md5?=?m5.hexdigest()
????????#?一、制作報頭
????????header_dic?=?{
????????????“total_size“:?os.path.getsize(addr)
????????????“filename“:?os.path.basename(addr)
????????????“md5“:?md5}
????????print(header_dic)
????????header_json?=?json.dumps(header_dic)
????????header_json_bytes?=?header_json.encode(‘utf-8‘)
????????#?二、發送數據
????????#?1、先發送報頭的長度
????????header_size?=?len(header_json_bytes)
????????client.send(struct.pack(‘i‘?header_size))
????????#?2、再發送報頭
????????client.send(header_json_bytes)
????????#?3、最后發送真實的數據
????????with?open(fr‘{addr}‘?mode=‘rb‘)?as?f:
????????????for?line?in?f:
????????????????client.send(line)
????????print(‘文件上傳成功!‘)
client.close()
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2671??2020-08-14?18:38??上傳下載文件。\3.2?客戶端.py
?????文件???????2607??2020-08-14?18:36??上傳下載文件。\3.2?服務端.py
?????文件????????450??2020-08-14?20:01??上傳下載文件。\用前閱讀.txt
?????目錄??????????0??2020-08-14?19:57??上傳下載文件。
-----------?---------??----------?-----??----
?????????????????5728????????????????????4
評論
共有 條評論