Python 通过TCP发送图像并保存
我已经建立了一个程序的客户端和服务器在TCP。服务器截图显示屏幕并将图像发送到客户端。当客户端尝试将此图像保存为二进制文件时,问题就开始了。 显示的唯一错误是在客户端:Python 通过TCP发送图像并保存,python,image,file,save,tuples,Python,Image,File,Save,Tuples,我已经建立了一个程序的客户端和服务器在TCP。服务器截图显示屏幕并将图像发送到客户端。当客户端尝试将此图像保存为二进制文件时,问题就开始了。 显示的唯一错误是在客户端: data.save(path) TypeError: must be string or buffer, not tuple 我做错了什么 感谢并为我糟糕的英语感到抱歉 服务器代码: from socket import * from PIL import Image impor
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
这是因为数据是一个元组
返回值是一对字符串,其中字符串是一个字符串
表示接收到的数据,地址是
套接字发送数据
因此,你可以:
data, address = mySocket.recvfrom(4096)