socket实现图片读取

一个位置的图片读取到另一个位置

添加一个新知识
#如果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)
原文地址:https://www.cnblogs.com/TKOPython/p/12422747.html