码迷,mamicode.com
首页 > 编程语言 > 详细

python入门第二十八天——文件上传

时间:2018-08-02 13:55:53      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:图片   send   创建   端口   需要   none   tcp   end   color   

服务端:

 1 #!/usr/bin/env python3
 2 #-*- coding:utf-8 -*-
 3 ‘‘‘
 4 Administrator 
 5 2018/8/1 
 6 ‘‘‘
 7 import subprocess
 8 import socket,os
 9 
10 # 创建一个socket:
11     #family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None
12     #创建Socket时,AF_INET指定使用IPv4协议,
13     # 如果要用更先进的IPv6,就指定为AF_INET6
14     # AF_UNIX Unix不同进程之间的通信
15     #  SOCK_STREAM指定使用面向流的TCP协议 SOCK_DGRAM UDP协议
16 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
17 print(s)
18 address=(127.0.0.1,8000)
19 #建立连接
20 s.bind(address)
21 #监听设置端口等待客户端的请求数量
22 s.listen(3)
23 
24 
25 print(等待...........)
26 BASE_DIR=os.path.dirname(os.path.abspath(__file__))
27 
28 while True:
29     # accept 阻塞
30     conn, addr = s.accept()
31     print(addr)
32     while True:
33         data=conn.recv(1024)
34         cmd,filename,filesize=str(data,"utf8").split("|")
35         path=os.path.join(BASE_DIR,"img",filename)
36         filesize=int(filesize)
37 
38         f=open(path,"wb")
39 
40         get_sent=0
41         while get_sent != filesize:
42             data=conn.recv(1024)
43             get_sent+=len(data)
44             f.write(data)
45         print("接受完毕。")
46         f.close()
47 
48 
49 s.close()

客户端:

 1 #!/usr/bin/env python3
 2 # -*- coding:utf-8 -*-
 3 ‘‘‘
 4 Administrator 
 5 2018/8/1 
 6 ‘‘‘
 7 import socket,os,sys
 8 
 9 sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
10 print(sck)
11 address = (127.0.0.1, 8000) #192.168.0.103
12 sck.connect(address)
13 
14 BASE_DIR=os.path.dirname(os.path.abspath(__file__))
15 while True:
16     inp = input(">>>").strip()#post|kanqingzi.jpg
17 
18     cmd,path=inp.split("|")
19     path=os.path.join(BASE_DIR,path)#拼接路径
20 
21     filename=os.path.basename(path)#需要文件名字
22     filesize=os.stat(path).st_size#需要文件大小
23     #文件打包
24     file_info="post|%s|%s"%(filename,filesize)#字符串拼接
25     sck.sendall(bytes(file_info,"utf8"))
26 
27     with open(path,"rb") as f:
28         has_sent=0
29         while has_sent !=filesize:
30             data=f.read(1024)
31             sck.sendall(data)
32             has_sent+=len(data)
33     print("上传成功!!!")
34 
35 sck.close()


练习:远程控制对方电脑,并将对方电脑里面的图片发送过来。

 

python入门第二十八天——文件上传

标签:图片   send   创建   端口   需要   none   tcp   end   color   

原文地址:https://www.cnblogs.com/Mengchangxin/p/9406496.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!