类型错误:需要一个类似字节的对象,而不是“str”

新手上路,请多包涵

以下是尝试使用套接字修改用户提供的输入的代码:

 from socket import *

serverName = '127.0.0.1'
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_DGRAM)
message = input('Input lowercase sentence:')
clientSocket.sendto(message,(serverName, serverPort))
modifiedMessage, serverAddress = clientSocket.recvfrom(2048)
print (modifiedMessage)
clientSocket.close()

当我执行它并提供输入时,会发生以下错误:

 Input lowercase sentence:fdsgfdf
Traceback (most recent call last):
  File "C:\srinath files\NETWORKS\UDPclient.py", line 6, in <module>
    clientSocket.sendto(message,(serverName, serverPort))
TypeError: a bytes-like object is required, not 'str'

我能做些什么来解决这个问题?

原文由 sri 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 335
1 个回答

此代码适用于 Python 2。但在 Python 3 中,会导致位编码错误。我试图制作一个简单的 TCP 服务器并遇到了同样的问题。编码解决了这个问题。尝试使用 sendto 命令。

 clientSocket.sendto(message.encode(),(serverName, serverPort))

类似地,如果您想完全按照发送的方式打印数据,则应使用 .decode() 在 UDP 服务器端接收数据。

原文由 Umair47 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题