'''服务端'''
import json
import os
import socket
import struct
share_dir = r'F:\winnie\socket\07_文件传输\server\share'
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
phone.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
phone.bind(('127.0.0.1', 8090))
phone.listen(5)
print('starting======')
while True:
conn, client_addr = phone.accept() # conn是套接字对象
print(client_addr)
while True:
try:
# 1、收命令
res = conn.recv(8096)
if not res: break
# 2、解析命令,提取响应命令参数
cmds = res.decode('utf-8').split()
filename = cmds[1]
# 3、以读的方式打开文件,读取文件内容发送给客户端
# 第一步:制作固定长度的报头
header_dict = {
'filename': filename,
'md5': 'xxx',
'file_size': os.path.getsize(r'%s/%s' % (share_dir, filename))
}
header_json = json.dumps(header_dict)
header_bytes = header_json.encode('utf-8')
# 第二步:先发送报头的长度
conn.send(struct.pack('i', len(header_bytes)))
# 第三