TypeError:需要一个类似字节的对象,而不是'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'

我该怎么解决?


泛舟湖上清波郎朗
浏览 676回答 3
3回答

千万里不及你

这段代码可能对Python 2有用。但是在Python 3中,这会引起问题,这与位编码有关。我试图制作一个简单的TCP服务器并遇到相同的问题。编码对我有用。尝试使用sendto命令。clientSocket.sendto(message.encode(),(serverName, serverPort))同样.decode(),如果要完全按照发送的方式打印数据,则可以在UDP服务器端接收数据。

杨__羊羊

一点编码即可解决此问题:客户端:message = input("->")clientSocket.sendto(message.encode('utf-8'), (address, port))服务器端:data = s.recv(1024)modifiedMessage, serverAddress = clientSocket.recvfrom(message.decode('utf-8'))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python