一个位置的图片读取到另一个位置
添加一个新知识
#如果accept和revc没有数据就会报错,但是设置为Ture就不会报错
service_socket.setblocking(True)
import socket import os #先创建文件基本信息 BASE_DIR = os.path.dirname(os.path.abspath(__file__)) #创建socket对象 service_socket = socket.socket() #绑定地址 adddress = ("127.0.0.1",5757) service_socket.bind(adddress) #可以多少人同时在线 service_socket.listen(3) #接收客户端信息(conn)表示客户端对象 client_conn,addr= service_socket.accept() print("连接成功",client_conn) print("连接成功",addr) ''' 接收客户端发送的打包信息并解析 客户端发过来的是三个信息以“|”隔开 data接收的信息是bytes型,只要转换str才能切分 ''' data = client_conn.recv(1024) filename,filesize = str(data,"utf8").split("|") print(filename,filesize) filesize = int(filesize) #图片放置文件位置,包含文件位置和名称 save_files =os.path.join(BASE_DIR,"copyfile",filename) #接收发送的文件 with open(save_files,"ab") as f: #重一个位置写入文件信息 writeNum = 0 while writeNum != filesize: #先接收信息,再写入信息 savefile = client_conn.recv(1024) f.write(savefile) writeNum += len(savefile)
import socket import os #创建socket对象 client_socket = socket.socket() #绑定地址 address = ("127.0.0.1",5757) #连接服务端 client_socket.connect(address) ''' 连接服务端后,向服务端发送打包的图片信息 1.先获取文件信息,文件位置,文件名称,文件大小,然后发送 2.发送内容包含指令cmd和需要复制的图片名称中间用“|”隔开 ''' #先创建文件基本信息 BASE_DIR = os.path.dirname(os.path.abspath(__file__)) #文件获取文件具体位置和名称 path = os.path.join(BASE_DIR,"11.png") #这个位置填写输入的图片名称 #获取文件名称 filename = os.path.basename(path) #获取文件大小 filesize = os.stat(path).st_size #将发送的信息打包 file_save = "%s|%s"%(filename,filesize) #向服务端发送图片的信息 client_socket.sendall(bytes(file_save,"utf8")) ''' 打开文件 发送图片内容信息到服务端 每次循环发送 ''' with open(path,"rb") as f: #重一个位置读取文件信息 fileNmu = 0 while fileNmu != filesize: #先读取信息,在发送信息 readdata = f.read(1024) client_socket.sendall(readdata) fileNmu += len(readdata)