上传文件

服务器端
 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()

 

posted @ 2020-06-19 00:43  死循环了  阅读(119)  评论(0编辑  收藏  举报