【问题标题】:send image over TCP & save通过 TCP 发送图像并保存
【发布时间】:2014-08-13 13:08:07
【问题描述】:

我已经在 TCP 中构建了一个客户端和服务器程序。服务器截取其屏幕并将图像发送到客户端。当客户端尝试将此图像保存在二进制文件中时,问题就开始了。 出现的唯一错误是在客户端:

  data.save(path)

         TypeError: must be string or buffer, not tuple

我做错了什么?

感谢并为我糟糕的英语感到抱歉。

服务器代码:

    from socket import *
    from PIL import Image
    import StringIO
    import ImageGrab


    port =9999

    print 'starting SERVER ... '
    sock = socket(AF_INET, SOCK_STREAM)
    sock.bind(('', port)) # port to listen on

    print 'starting to listen...'
    sock.listen(SOMAXCONN)
    client, addr = sock.accept() # when accepting a connection, we get a tuple - two different                     variables with info about the new connection
    print 'done listening!'
    print 'client address is: ' + str(addr)


    buf=StringIO.StringIO()#create buffer    

    img=ImageGrab.grab()#take screenshot

    img.save(buf,format='PNG')#save screenshot to buffer

    client.sendall(buf.getvalue())

    sock.close()
    del sock

客户代码:

    import socket
    from PIL import Image

    mySocket =None
    ip='127.0.0.1'
    port=9999        
    try :
        print 'starting Client'
        mySocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

        print 'trying to connet'
        mySocket.connect(( ip,port))
        print 'conneted successfuly!'
    except socket.error,msg :
        print 'Failed to create socket.Error code :' +str(msg[0])+'Error message:'+msg[1]

    data=mySocket.recvfrom(4096)

    path="D:\\Users\\user-pc\\Desktop\\bbbb.png"
    newf=open(path,'wb')
    newf.write(data)


    mySocket.close()
    del mySocket 

【问题讨论】:

    标签: python image file save tuples


    【解决方案1】:

    那是因为data 是一个元组。

    返回值是一对 (string, address) 其中string是一个字符串 表示接收到的数据和地址是的地址 套接字发送数据。

    https://docs.python.org/2/library/socket.html

    所以,你可以这样做:

    data, address = mySocket.recvfrom(4096)
    

    【讨论】:

      猜你喜欢
      • 2014-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-17
      • 1970-01-01
      • 2016-02-20
      • 1970-01-01
      相关资源
      最近更新 更多