类型错误:需要一个类似字节的对象,而不是“str" [英] TypeError: a bytes-like object is required, not 'str'
问题描述
以下是尝试使用套接字修改用户提供的输入的代码:
The following is the code that tries to modify the input supplied by a user by using sockets:
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()
当我执行它并提供输入时发生以下错误:
When I execute it and supply input the following error occurs:
Input lowercase sentence:fdsgfdf
Traceback (most recent call last):
File "C:srinath filesNETWORKSUDPclient.py", line 6, in <module>
clientSocket.sendto(message,(serverName, serverPort))
TypeError: a bytes-like object is required, not 'str'
我该怎么做才能解决这个问题?
What can I do to solve this?
推荐答案
此代码适用于 Python 2.但在 Python 3 中,会导致位编码错误.我试图制作一个简单的 TCP 服务器并遇到了同样的问题.编码解决了这个问题.用 sendto
命令试试这个.
This code is good for Python 2. But in Python 3, results in bit encoding error. I was trying to make a simple TCP server and encountered the same problem. Encoding solves this. Try this with sendto
command.
clientSocket.sendto(message.encode(),(serverName, serverPort))
同样,如果您想完全按照发送的方式打印数据,您应该使用 .decode()
在 UDP 服务器端接收数据.
Similarly you should use .decode()
to receive the data on the UDP server side, if you want to print it exactly as it was sent.
这篇关于类型错误:需要一个类似字节的对象,而不是“str"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!