我用pygame,imageGrab和套接字创建了一个程序,但它不起作用。它应该使用ImageGrab将服务器的打印屏幕转换为字符串,并将其发送到客户端。但是,由于接收信息,并将其转换为图像客户端引发错误:Pygame不能用套接字工作
image = pygame.image.frombuffer(img, (800,600), "RGB")
ValueError: Buffer length does not equal format and resolution size
代码服务器
import sys, os, socket, pygame
from PIL import ImageGrab
from pygame.locals import *
print "streaming sever 0.1"
try:
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error:
print "Error creating socket"
sys.exit(1)
host = "127.0.0.1"
port = raw_input("Port:")
socket.bind((host, int(port)))
socket.listen(2)
socket2,client = socket.accept()
print "Client conectado: " + str(client[0]) + "\nPorta usada: " + str(client[1])
#Capture and send
while True:
img=ImageGrab.grab().resize((800,600))
img.tostring()
socket2.sendall(img)
socket2.close()
代码客户端
import sys, os, socket, pygame
from PIL import ImageGrab
from pygame.locals import *
print "streaming client 0.1"
pygame.init()
try:
s_client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print "streaming protocol started"
except socket.error:
print "Error creating socket"
sys.exit(1)
host = "127.0.0.1"
porta = raw_input("Port:")
q_bytes = raw_input("Enter the number of MBs to transfer: ")
t_bytes = 1024*1024*int(q_bytes)
try:
s_client.connect((host,int(porta)))
except socket.error:
print "Error connecting to: " + host
sys.exit(1)
print "Conectado!"
size = width, height = 800, 600
screen = pygame.display.set_mode(size)
num = 0
while True:
img = s_client.recv(t_bytes)
image = pygame.image.frombuffer(img, (800,600), "RGB")
screen.blit(image,(0,0))
pygame.display.flip()
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
os._exit(1)
#recebimento
s_client.close()
Hola!目前我们在这里说英语。 Por favor traducir http://translate.google.com/ :) – Coffee
嗨adel我编辑了这篇文章,其实我是用英文写的,但是在Chrome中有一个错误,那个部分是用葡萄牙语出来的,谢谢你让我知道以我的错误感到非常惭愧,我的第一个帖子在这里,并已经提出错误),直到更多 谢谢布鲁诺Tripoloni – Siberdroni
对任何人寻找ImageGrab;显然它只是Windows。 – Thomas