服务器端
1 import socket 2 import time 3 import os 4 sk=socket.socket() 5 address=("127.0.0.1",8000) 6 sk.bind(address) 7 sk.listen(3) 8 print("等待链接") 9 conn,raddr=sk.accept() 10 收到的信息=conn.recv(1024) 11 print(收到的信息) 12 post,文件名,文件大小=str(收到的信息,"utf8").split("|") 13 print(文件大小) 14 文件大小=int(文件大小) 15 基础地址=os.path.dirname(os.path.abspath(__file__)) 16 保存地址=os.path.join(基础地址,"上传",文件名) 17 创建文件=open(保存地址,"ab") 18 累计收到=0 19 20 while 累计收到!=文件大小: 21 22 收到的信息2=conn.recv(1024) 23 创建文件.write(收到的信息2) 24 print(len(收到的信息2)) 25 累计收到+=len(收到的信息2) 26 27 print(累计收到) 28 print(文件大小) 29 30 创建文件.close()
客户端
1 import socket 2 import os 3 sk=socket.socket() 4 address=("127.0.0.1",8000) 5 sk.connect(address) 6 绝对路径文件夹=os.path.dirname(os.path.abspath(__file__)) 7 8 # 文件名=os.path.basename(绝对路径文件夹) 9 输入上传名=input(">>>>>>")#post|微信.png 10 命令,文件名=输入上传名.split("|") 11 绝对路径=os.path.join(绝对路径文件夹,文件名) 12 文件名=os.path.basename(绝对路径) 13 文件大小=os.stat(绝对路径).st_size 14 print(文件大小) 15 打包信息="post|%s|%s"%(文件名,文件大小) 16 sk.send(bytes(打包信息,"utf8")) 17 打开文件=open(绝对路径,"rb") 18 19 20 21 累计发送=0 22 while 累计发送!=文件大小: 23 读取文件 = 打开文件.read(1024) 24 sk.sendall(读取文件) 25 print("发送一次") 26 累计发送+=len(读取文件) 27 28 打开文件.close()