Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用cpickle序列化对象时的EOF_Python_Pickle - Fatal编程技术网

Python 使用cpickle序列化对象时的EOF

Python 使用cpickle序列化对象时的EOF,python,pickle,Python,Pickle,我有以下的引述,这似乎很有效: from cPickle import * class Clientthread(threading.Thread): def __init__(self,clientsocket, mystring): self.client = clientsocket self.clients = [clientsocket] self.testEntity = entity.Entity(position = [1,7])

我有以下的引述,这似乎很有效:

from cPickle import *
class Clientthread(threading.Thread):
   def __init__(self,clientsocket, mystring):
      self.client = clientsocket
      self.clients = [clientsocket]
      self.testEntity = entity.Entity(position = [1,7])
      self.testTosend = dumps(self.testEntity,2)
      self.client.send(self.testTosend)
然而,当我试图用

 news=self.s.recv(1024)
 realnews = loads(news)
我在使用加载的行中得到一个EOF错误。
你知道这是从哪里来的吗?

假设
self.s
是一个
socket
recv
方法并不总是返回您请求的确切字节数。如文档中所述,该量是
recv
返回的最大字节量


这会导致不完整的数据被传递到你的
加载文件中

哦,这就解释了很多。你知道我该如何找出我的对象有多少字节吗?如果它应该很大,是否有其他方法来接收所有字节?是的,s当然是一个套接字。你需要设置某种协议通过套接字发送东西。最简单的方法是发送前面以字节为单位的每个数据块。这样,接收端总是知道期望和读取的字节数。我检查过了——事实上我发送了191个字节——所以对象不可能太大。这个错误还有其他可能的原因吗?或者,换言之,接收端可能接收4096字节,但我只发送191字节。可能有什么问题?