標籤:圖片 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=None12 #建立Socket時,AF_INET指定使用IPv4協議,13 # 如果要用更先進的IPv6,就指定為AF_INET614 # 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=041 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.10312 sck.connect(address)13 14 BASE_DIR=os.path.dirname(os.path.abspath(__file__))15 while True:16 inp = input(">>>").strip()#post|kanqingzi.jpg17 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=029 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入門第二十八天——檔案上傳