我是 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())
我在这里做错了什么?预先感谢。
在这种情况下,您应该使用 recv(4096) 而不是 recvfrom(4096)
因为recvfrom 返回一个元组,其中包含( ByteObject , Address)
recvfrom 通常用于 UDP 并且只获取由 sendto 发送的一条消息。