属性错误:“元组”对象没有属性“解码”

问题描述 投票:0回答:1

我是 python 和网络新手,我尝试构建简单的套接字程序,使用 python 向服务器发送消息,但出现此错误:

回溯(最近一次调用最后一次):文件“E:\Chat cp_server.py”, 第 12 行,在 print('[*] 已接受来自以下位置的连接: ', addr, ' : ', data.decode()) 属性错误:“元组”对象没有属性“解码”

这是我的服务器代码:

import socket 
bind_ip = "127.0.0.1"
bind_port = 7777
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((bind_ip, bind_port))
server.listen(1)
print('[*] TCP Server Listening on:', bind_ip,' ',bind_port)
while True:
    client, addr = server.accept()
    server.setblocking(0)
    data = client.recvfrom(4096)
    print('[*] Accepted connection from: ', addr, ' : ', data.decode())
    data = 'Connected'
    client.send(data.encode(), addr)
    client.close()

这是客户端代码:

import socket
target_host = "127.0.0.1"
target_port = 7777
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((target_host, target_port))
data = 'latihan pemograman socket'
client.send(data.encode('utf_8'))
respon = client.recv(4096)
print(respon.decode())

我在这里做错了什么?预先感谢。

python python-3.x sockets io
1个回答
0
投票

在这种情况下,您应该使用 recv(4096) 而不是 recvfrom(4096)
因为recvfrom 返回一个元组,其中包含( ByteObject , Address)
recvfrom 通常用于 UDP 并且只获取由 sendto 发送的一条消息。

© www.soinside.com 2019 - 2024. All rights reserved.