(一)目录结构展示
(二)代码及讲解(注释很详细了)
服务端代码:
import os
import socket
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind(("127.0.0.1", 8000))
sock.listen(5)
con, client_addr = sock.accept()
print("%s:%s is connected"% client_addr)
filePath = os.listdir("downloadable") # ['1.txt', '2.txt']
sendData = "\n".join(filePath).encode() #文件以一列显示出来,所以换行连接
con.send(sendData) # 接到客户端的请求后,把可下载内容展示出来
recv = con.recv(512).decode() # 等用户输入要下载的文件发给服务端后,我们就会接收到客户要下载的文件名
if recv in filePath: # 如果要下载的文件在上面的filePath列表中就读取它并发送
filename = recv
filesize = os.path.getsize("downloadable\\%s"%filename) # 计算要传送的文件大小
file_head = "filename=%s;filesize=%s"%(filename,filesize)
con.send(file_head.encode()