无法取消打印

2024-04-27 02:36:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图解开通过套接字发送的对象

我的服务器有这个类

ActivePeerList = []

class PeerInfo():
  def __init__(self):
  self.hostname = ""
  self.cookie = None
  self.active = False
  self.TTL = 7200
  self.port = ""
  self.no_of_times = 0
  self.LastActiveDate = None 

我将这个类的实例附加到列表中,并通过套接字将其发送到客户端。在

^{pr2}$

当我试图取消拾取时,即酸洗负荷(客户端.recv(1024))

AttributeError: Can't get attribute 'PeerInfo' on <module '__main__' (<_frozen_importlib.SourceFileLoader object at 0x0000000002A73828>)>

是否禁止传输未知类(即客户未知)??即使是这样,我也会把它包含在一个列表对象中。所以它应该有用。正确的??在

任何帮助都将不胜感激


Tags: 对象self服务器nonefalse客户端列表init
1条回答
网友
1楼 · 发布于 2024-04-27 02:36:35

Pickling通过传递函数和类的限定名(使用一些样板文件)来处理函数和类,以便在取消pickle时查找它们。它使结果pickle小得多,但是因为它不能传递任何关于它们的信息,所以你所尝试的就行不通了。您的必须在取消拾取端使用相同的限定名,否则它将无法工作。在

如果您想使用任意形式的序列化数据(客户机缺少完整的定义),我建议您使用JSON或XML(这两种方法都可以避免从潜在的不可信源取消pickle的安全风险)。在

相关问题 更多 >