0%

TypeError. a bytes-like object is required, not 'str'

❓ 出错TypeError: a bytes-like object is required, not ‘str’。以下是试图通过使用sockets修改用户提供的输入的代码:

1
2
3
4
5
6
7
8
9
10
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()

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

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

✔️ 这段代码可能对Python 2有用。但是在Python 3中,这会引起问题,这与位编码有关。 我试图制作一个简单的TCP服务器并遇到相同的问题。 编码对我有用。 尝试使用sendto命令。

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

同样,如果要完全按照发送的方式打印数据,则可以使用.decode()在UDP服务器端接收数据。