【问题标题】:cannot decode array element (encoded as string) recieved via socket无法解码通过套接字接收的数组元素(编码为字符串)
【发布时间】:2017-10-06 01:13:06
【问题描述】:

我正在编写一个程序来通过套接字将目录发送到客户端。程序的一部分处理使用特定代码创建一个数组(例如:代码 1 表示客户端应该期望文件名,2 表示客户端应该期望文件内容),另一部分处理解码这个数组。但是在使用 .decode() 方法解码时,我得到了

AttributeError: 'builtin_function_or_method' object has no attribute 'decode'

我是套接字编程的新手,但已成功解码通过套接字发送的字符串我做错了什么?

服务器代码:

   cab=['1'.encode,c.encode()] #since file is not created, file name 'c'  is sent
   client.send(pickle.dumps(cab)) #transmits the cab

客户端代码:

cab=pickle.loads(client.recv(r_size))
if(cab):
    d=cab[0]
    print(d.decode())
    return 0
else:
    print("error")

【问题讨论】:

  • 在尝试解码之前通过打印 d 来找出答案。也看看type()。最后,问题不在于套接字......
  • 我试过了,它返回了一个编码字符串的地址。
  • 它应该是一个字节对象(decode())。这是您的服务器代码中的拼写错误(缺少括号)吗?

标签: python sockets


【解决方案1】:

这似乎是个问题:

cab=['1'.encode, # <-- no parentheses
     c.encode()]

你没有调用方法,你只是传递了可调用对象。 应该是:

 cab=['1'.encode(),c.encode()]

【讨论】:

    猜你喜欢
    • 2022-01-15
    • 2012-05-22
    • 2016-04-22
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    相关资源
    最近更新 更多