Я пытаюсь создать клиент-сервер UDP из TCP-сервера. У меня возникла проблема с кодированием и печатью полученного сообщения с сервера на клиент. Он работает так же, как у меня в 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
Я не уверен, почему ???