socket文件下载超细讲解

本文深入讲解了使用Socket进行文件下载的实现过程,包括服务端和客户端的代码实现,并附有详细的注释解析,展示了服务端和客户端的执行结果。

(一)目录结构展示

(二)代码及讲解(注释很详细了)

服务端代码:

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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值