【发布时间】:2014-04-29 16:52:43
【问题描述】:
我有一个简单的脚本,可以将图像文件从一台机器传输到另一台机器, 进行图像处理并将结果作为“骰子计数”返回。 问题是随机接收到的图像部分是灰色的。好像没有 关于何时传输不完整的原因,我在代码中没有看到其他问题。 客户端没有给出任何错误或任何指示 sendall 失败或不完整的指示。 谢谢大家。
服务器代码:
def reciveImage():
#create local buffer file
fo = open("C:/foo.jpg", "wb")
print "inside reciveImage"
while True:
print "inside loop"
data = client.recv(4096)
print "data length: ", len(data)
fo.write(data)
print "data written"
if (len(data) < 4096):
break
print "break"
fo.close()
print "Image received"
以及(简化的)客户端代码:
data = open("/home/nao/recordings/cameras/image1.jpg", "rb")
# prepare to send data
binary_data = data.read()
data.close()
sock.sendall(binary_data)
正常服务器输出:
Client Command: findBlob. Requesting image...
inside reciveImage
inside loop
data length: 4096
data written
#... This happens a bunch of times....
inside loop
data length: 4096
data written
inside loop
data length: 1861
data written
Image received
dice count: 0
Waiting for a connection
但随机它只会循环几次或更少,例如:
Client Command: findBlob. Requesting image...
inside reciveImage
inside loop
data length: 1448
data written
Image received
dice count: 0
Waiting for a connection
【问题讨论】: