使用 Python 在 UDP 客户端-服务器中打印消息时出现编码问题

Encoding problem when printing message in UDP client-server using Python

我正在尝试从 TCP 创建 UDP 客户端服务器。我 运行 遇到编码和打印从服务器到客户端的接收消息的问题。它的工作方式与我在 TCP 上的工作方式相同,但似乎不适用于 UDP,而且我不确定我还需要编码什么?

这是我遇到的错误:

File "/Users/PycharmProjects/UDPProject/client.py", line 29, in <module>
    print("received %s" % command)
TypeError: not all arguments converted during string formatting

这里是我的客户端代码,删掉了一些代码。

while True:

    message = input("Please enter a command:\n")  # ask user to input message
    if message == 'quit':
        break
    if len(message) == 0:
        print("Please enter something")
        message = input("Please enter a command:\n")
    print("Sending %s" % message)
    sock.sendto((message.encode("utf-8")), address)  # send message
    command = str(sock.recvfrom(BUFFER_SIZE), "utf-8")
    print("received %s" % command)

print("closing connection with server")
sock.close()

当套接字试图从 utf-8 格式的缓冲区大小时接收数据并且当我尝试打印它时,就会发生这种情况。

编辑:我修复了错误,这只是 lenz 概述的拼写错误,但现在它给了我这个错误

command = str(sock.recvfrom(BUFFER_SIZE), "utf-8")
TypeError: decoding to str: need a bytes-like object, tuple found

我不知道为什么???

socket.recvfrom returns UDP 中的一对元组(字节,地址)所以我不得不解码第一个字节。我就是这样做的。

command = str(sock.recvfrom(BUFFER_SIZE)[0], "utf-8")[0] 获取 BUFFER_SIZE

元组中的第一项