使用 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
元组中的第一项
我正在尝试从 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