zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    理解HashSet及使用
    Java 集合类详解
    Java-泛型编程-使用通配符? extends 和 ? super
    回调函数及其用法
    log4j.properties 详解与配置步骤
    约瑟夫环
    泛型的约束与局限性
    把代码字体加大的办法
    System.arraycopy方法
    泛型数组列表与反射
  • 原文地址:https://www.cnblogs.com/TKOPython/p/12422747.html
Copyright © 2011-2022 走看看