套接字.Recvfrom函数返回一个元组(python)



我是一个python新手,我必须创建一个连接4台机器的Truco(巴西游戏,如果你不知道)游戏。我用类来做,用pickle把它转移到一个socket。根据我能在网上找到的,这应该工作,但我的recv是一个元组,我不能使用从元组加载。我试图将其转换为列表,然后转换为字符串,但没有任何作用!

def recv(self, machine):
    PORT = 5054
    HOST = ''
    orig = (socket.gethostbyname(HOST), PORT)
    machine._socketrcv.bind(orig)
    recv = machine._socketrcv.recvfrom(1024)
    return pickle.loads(recv)

这是我的send方法:

def sent(self, m, machine):
    PORT = 5054
    dest = (machine._host, PORT)
    self._socketsnd.sendto(m._dados,dest)

m._dados是self。Dados =泡菜。转储(不同,2)

有人能帮忙吗?

您可能想要读取套接字,然后执行recv = machine._socketrcv.recvfrom(1024)[0]

socket.recvfrom(bufsize[, flags])

从套接字接收数据。返回值是一对(string, address),其中string是表示接收到的数据的字符串,address是发送数据的套接字的地址。有关可选参数flags的含义,请参阅Unix手册页recv(2);默认为0。(地址的格式取决于地址族-见上文)

recvfrom返回一个包含数据和地址的元组(更多信息可以在套接字文档中找到)。与其他语言不同,Python允许您在赋值语句的左侧放置一个元组,因此如果您这样做:

data, (address, port) = machine._socketrcv.recvfrom(1024)

可以访问单独命名变量中需要的所有信息。在您的例子中,您只需要数据:

pickle.loads(data)

相关内容

  • 没有找到相关文章

最新更新